Package | flash.net |
Classe | public class ServerSocket |
Héritage | ServerSocket EventDispatcher Object |
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Prise en charge du profil AIR : cette fonctionnalité est prise en charge sur tous les systèmes d’exploitation de bureau, sur iOS (à partir d’AIR 3.8 ) et sur Android (à partir d’AIR 3.8 ). Cette fonctionnalité n’est pas prise en charge sur les périphériques AIR pour TV. Vous pouvez tester la prise en charge lors de l’exécution à l’aide de la propriété ServerSocket.isSupported
. Voir Prise en charge du profil AIR pour plus d’informations sur la prise en charge de l’API dans plusieurs profils.
Un serveur TCP écoute les connexions entrantes de clients distants. Lorsqu’un client tente de se connecter, l’objet ServerSocket distribue un événement connect
. L’objet ServerSocketConnectEvent distribué pour l’événement fournit un objet Socket représentant la connexion TCP entre le serveur et le client. Utilisez cet objet Socket pour les communications suivantes avec le client connecté. Le cas échéant, l’objet Socket peut vous fournir l’adresse et le port du client.
Remarque : votre application est chargée de maintenir une référence à l’objet Socket du client. Dans le cas contraire, l’objet peut être nettoyé et détruit par le moteur d’exécution sans avertissement.
Pour placer un objet ServerSocket en état d’écoute, appelez la méthode listen()
. En état d’écoute, l’objet ServerSocket distribue des événements connect
dès qu’un client qui utilise le protocole TCP tente de se connecter à l’adresse et au port liés. L’objet ServerSocket continue d’écouter les connexions jusqu’à ce que vous appeliez la méthode close()
.
Les connexions TCP sont continues. Elles sont maintenues jusqu’à ce que l’un des côtés de la connexion la ferme (ou en cas d’échec réseau grave). Toutes les données envoyées via la connexion sont divisées en paquets transmissibles, puis reconstituées à l’autre extrémité de la connexion. Dans la limite du possible, tous les paquets sont transmis et tous les paquets perdus sont retransmis. En général, le protocole TCP gère mieux la bande passante réseau disponible que le protocole UDP. La plupart des applications AIR qui nécessitent des communications socket doivent utiliser les classes ServerSocket et Socket plutôt que la classe DatagramSocket.
La classe ServerSocket peut être utilisée uniquement dans les applications d’Adobe AIR et uniquement dans le sandbox de sécurité de l’application.
Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).
Plus d’exemples
Eléments de l’API associés
Propriété | Défini par | ||
---|---|---|---|
bound : Boolean [lecture seule]
Indique si le socket est lié à une adresse et à un port locaux. | ServerSocket | ||
constructor : Object
Référence à l’objet de classe ou à la fonction constructeur d’une occurrence donnée d’un objet. | Object | ||
isSupported : Boolean [statique] [lecture seule]
Indique si les fonctions ServerSocket sont prises en charge dans l’environnement d’exécution. | ServerSocket | ||
listening : Boolean [lecture seule]
Indique si le socket du serveur écoute les connexions entrantes. | ServerSocket | ||
localAddress : String [lecture seule]
Adresse IP via laquelle le socket écoute. | ServerSocket | ||
localPort : int [lecture seule]
Port via lequel le socket écoute. | ServerSocket |
Méthode | Défini par | ||
---|---|---|---|
Crée un objet ServerSocket. | ServerSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Enregistre un objet écouteur d’événement auprès d’un objet EventDispatcher afin que l’écouteur soit averti d’un événement. | EventDispatcher | ||
Lie ce socket à l’adresse et au port locaux spécifiés. | ServerSocket | ||
Ferme le socket et cesse d’écouter les connexions. | ServerSocket | ||
Distribue un événement dans le flux d’événements. | EventDispatcher | ||
Vérifie si des écouteurs sont enregistrés auprès de l’objet EventDispatcher pour un type spécifique d’événement. | EventDispatcher | ||
Indique si la propriété spécifiée d’un objet est définie. | Object | ||
Indique si une occurrence de la classe Object figure dans la chaîne de prototype de l’objet spécifié en tant que paramètre. | Object | ||
Lance l’écoute des connexions TCP entrantes sur l’adresse IP et le port liés. | ServerSocket | ||
Indique si la propriété spécifiée existe et est énumérable. | Object | ||
Supprime un écouteur de l’objet EventDispatcher. | EventDispatcher | ||
Définit la disponibilité d’une propriété dynamique pour les opérations en boucle. | Object | ||
Renvoie la représentation de chaîne de cet objet, formatée selon les paramètres régionaux en vigueur. | Object | ||
Renvoie la représentation sous forme de chaîne de l’objet spécifié. | Object | ||
Renvoie la valeur primitive de l’objet spécifié. | Object | ||
Vérifie si un écouteur d’événement est enregistré auprès de cet objet EventDispatcher ou de ses ancêtres pour le type d’événement spécifié. | EventDispatcher |
Evénement | Synthèse | Défini par | ||
---|---|---|---|---|
[Evénement de diffusion] Distribué lorsque l’application Flash Player obtient le focus du système d’exploitation et devient active. | EventDispatcher | |||
Distribué lorsque le système d’exploitation ferme ce socket. | ServerSocket | |||
Distribué lorsqu’un socket distant tente de se connecter au socket de ce serveur. | ServerSocket | |||
[Evénement de diffusion] Distribué lorsque l’application Flash Player ou AIR perd le focus du système d’exploitation et devient inactive. | EventDispatcher |
bound | propriété |
isSupported | propriété |
listening | propriété |
localAddress | propriété |
localPort | propriété |
ServerSocket | () | Constructeur |
public function ServerSocket()
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Crée un objet ServerSocket.
Valeur émise
SecurityError — Cette erreur se produit si le contenu appelant est exécuté hors du sandbox de sécurité de l’application AIR.
|
bind | () | méthode |
public function bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Lie ce socket à l’adresse et au port locaux spécifiés.
Paramètres
localPort:int (default = 0 ) — Numéro de port auquel se relier sur l’ordinateur local. Si localPort est définie sur 0 (valeur par défaut), le prochain port système disponible est lié. L’autorisation de se connecter à un numéro de port inférieur à 1024 est soumise à la stratégie de protection du système. Sous Mac et Linux, par exemple, l’application doit être exécutée avec des privilèges racines pour se connecter aux ports inférieurs à 1024.
| |
localAddress:String (default = "0.0.0.0 ") — Adresse IP sur la machine locale à laquelle se relier. Cette adresse peut être une adresse IPv4 ou une adresse IPv6. Si le paramètre localAddress est défini sur 0.0.0.0 (valeur par défaut), le socket écoute toutes les adresses IPv4 disponibles. Pour écouter toutes les adresses IPv6, vous devez spécifier "::" comme argument de localAddress . Pour utiliser une adresse IPv6, l’ordinateur et le réseau doivent tous deux être configurés de façon à prendre en charge le protocole IPv6. En outre, un socket lié à une adresse IPv4 ne peut pas se connecter à un socket avec une adresse IPv6. De même, un socket lié à une adresse IPv6 ne peut pas se connecter à un socket avec une adresse IPv4. Le type d’adresse doit correspondre.
|
Valeur émise
RangeError — Cette erreur se produit lorsque le paramètre localPort est défini sur une valeur inférieure à 0 ou supérieure à 65535.
| |
ArgumentError — Cette erreur se produit lorsque localAddress n’est pas une adresse IP syntaxiquement correcte.
| |
IOError — S’il est impossible de lier le socket, notamment lorsque :
|
close | () | méthode |
public function close():void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Ferme le socket et cesse d’écouter les connexions.
Vous ne pouvez pas rouvrir les sockets fermés. Créez plutôt une nouvelle occurrence de ServerSocket.
Valeur émise
Error — Cette erreur se produit s’il s’avère impossible de fermer le socket ou si ce dernier n’a pas été ouvert.
|
listen | () | méthode |
public function listen(backlog:int = 0):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Lance l’écoute des connexions TCP entrantes sur l’adresse IP et le port liés.
La méthode listen()
est immédiatement renvoyée. Lorsque vous appelez listen()
, l’objet ServerSocket distribue un événement connect
à chaque tentative de connexion. La propriété socket
de l’objet d’événement ServerSocketConnectEvent fait référence à un objet Socket représentant la connexion serveur-client.
Le paramètre backlog
indique le nombre de connexions placées en file d’attente pendant que votre application traite les événements connect
. Si la file d’attente est pleine, d’autres connexions sont refusées sans qu’un événement connect
ne soit distribué. Si la valeur par défaut de zéro est spécifiée, la longueur maximale de la file d’attente définie par le système est utilisée. Cette longueur varie en fonction de la plate-forme et peut être configurée sur chaque poste de travail. Si la valeur spécifiée dépasse la longueur maximale autorisée par le système, la longueur maximale définie par le système est utilisée. Il n’existe aucun moyen de connaître la valeur actuelle du paramètre backlog. (La valeur maximale définie par le système est déterminée par le paramètre SOMAXCONN du sous-système de réseau TCP sur l’ordinateur hôte.)
Paramètres
backlog:int (default = 0 ) — Longueur maximale de la file d’attente des connexions en attente. Si le paramètre backlog est défini sur 0, la longueur de la file est définie sur la valeur système maximale.
|
Valeur émise
IOError — Cette erreur se produit si le socket n’est pas ouvert ou lié. Cette erreur se produit si l’appel à listen() échoue pour toute autre raison.
| |
RangeError — Cette erreur se produit si le paramètre backlog est inférieur à zéro.
|
close | Evénement |
flash.events.Event
propriété Event.type =
flash.events.Event.CLOSE
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Distribué lorsque le système d’exploitation ferme ce socket.
L’événement close
n’est pas distribué lorsque la méthode close()
de l’objet ServerSocket est appelée. Si d’autres objets dans votre application reposent sur l’événement close
, vous pouvez distribuer l’événement manuellement avant d’appeler la méthode close()
.
Event.CLOSE
définit la valeur de la propriété type
d’un objet événement close
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | L’objet qui traite activement l’objet Event avec un écouteur d’événements. |
target | Objet dont la connexion a été fermée. |
connect | Evénement |
flash.events.ServerSocketConnectEvent
propriété ServerSocketConnectEvent.type =
flash.events.ServerSocketConnectEvent.CONNECT
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 2 |
Distribué lorsqu’un socket distant tente de se connecter au socket de ce serveur.
Définit la valeur de la propriététype
d’un objet d’événement ServerSocketConnectEvent
.
Les propriétés de cet événement sont les suivantes :
Propriété | Valeur |
---|---|
bubbles | false . |
cancelable | false ; il n’existe aucun comportement par défaut à annuler. |
currentTarget | Cet objet ServerSocket. |
target | Cet objet ServerSocket. |
socket | Objet Socket représentant la nouvelle connexion. |
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.ProgressEvent; import flash.events.ServerSocketConnectEvent; import flash.net.ServerSocket; import flash.net.Socket; import flash.text.TextField; import flash.text.TextFieldType; import flash.utils.ByteArray; public class ServerSocketExample extends Sprite { private var serverSocket:ServerSocket = new ServerSocket(); private var clientSocket:Socket; private var localIP:TextField; private var localPort:TextField; private var logField:TextField; private var message:TextField; public function ServerSocketExample() { setupUI(); } private function onConnect( event:ServerSocketConnectEvent ):void { clientSocket = event.socket; clientSocket.addEventListener( ProgressEvent.SOCKET_DATA, onClientSocketData ); log( "Connection from " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } private function onClientSocketData( event:ProgressEvent ):void { var buffer:ByteArray = new ByteArray(); clientSocket.readBytes( buffer, 0, clientSocket.bytesAvailable ); log( "Received: " + buffer.toString() ); } private function bind( event:Event ):void { if( serverSocket.bound ) { serverSocket.close(); serverSocket = new ServerSocket(); } serverSocket.bind( parseInt( localPort.text ), localIP.text ); serverSocket.addEventListener( ServerSocketConnectEvent.CONNECT, onConnect ); serverSocket.listen(); log( "Bound to: " + serverSocket.localAddress + ":" + serverSocket.localPort ); } private function send( event:Event ):void { try { if( clientSocket != null && clientSocket.connected ) { clientSocket.writeUTFBytes( message.text ); clientSocket.flush(); log( "Sent message to " + clientSocket.remoteAddress + ":" + clientSocket.remotePort ); } else log("No socket connection."); } catch ( error:Error ) { log( error.message ); } } private function log( text:String ):void { logField.appendText( text + "\n" ); logField.scrollV = logField.maxScrollV; trace( text ); } private function setupUI():void { localIP = createTextField( 10, 10, "Local IP", "0.0.0.0"); localPort = createTextField( 10, 35, "Local port", "0" ); createTextButton( 170, 60, "Bind", bind ); message = createTextField( 10, 85, "Message", "Lucy can't drink milk." ); createTextButton( 170, 110, "Send", send ); logField = createTextField( 10, 135, "Log", "", false, 200 ) this.stage.nativeWindow.activate(); } private function createTextField( x:int, y:int, label:String, defaultValue:String = '', editable:Boolean = true, height:int = 20 ):TextField { var labelField:TextField = new TextField(); labelField.text = label; labelField.type = TextFieldType.DYNAMIC; labelField.width = 100; labelField.x = x; labelField.y = y; var input:TextField = new TextField(); input.text = defaultValue; input.type = TextFieldType.INPUT; input.border = editable; input.selectable = editable; input.width = 280; input.height = height; input.x = x + labelField.width; input.y = y; this.addChild( labelField ); this.addChild( input ); return input; } private function createTextButton( x:int, y:int, label:String, clickHandler:Function ):TextField { var button:TextField = new TextField(); button.htmlText = "<u><b>" + label + "</b></u>"; button.type = TextFieldType.DYNAMIC; button.selectable = false; button.width = 180; button.x = x; button.y = y; button.addEventListener( MouseEvent.CLICK, clickHandler ); this.addChild( button ); return button; } } }
Tue Jun 12 2018, 09:30 AM Z