Pakket | flash.net |
Klasse | public class ServerSocket |
Overerving | ServerSocket EventDispatcher Object |
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
AIR-profielondersteuning: Deze functie wordt ondersteund door alle desktopbesturingssystemen, op iOS (vanaf AIR 3.8) en op Android (vanaf AIR 3.8). Deze functie wordt niet ondersteund op AIR for TV-apparaten. Met de eigenschap ServerSocket.isSupported
kunt u testen op ondersteuning tijdens runtime. Zie AIR-profielondersteuning voor meer informatie over API-ondersteuning voor meerdere profielen.
Een TCP-server luistert naar binnenkomende verbindingen van externe clients. Wanneer een client verbinding maakt, wordt een connect
-gebeurtenis verzonden door de ServerSocket. Het ServerSocketConnectEvent-object dat voor de gebeurtenis wordt verzonden bevat een Socket-object dat staat voor de TCP-verbinding tussen de server en de client. Gebruik dit Socket-object voor vervolgcommunicatie met de verbonden client. Indien nodig kunt u het adres en de poort van de client ophalen uit het Socket-object.
Opmerking: Uw toepassing is verantwoordelijk voor het onderhouden van een referentie naar het Socket-object op de client. Als u dit niet doet, kan het object in aanmerking komen voor opschoning en kan deze tijdens de uitvoering zonder waarschuwing worden vernietigd.
Als u de luistermodus wilt activeren voor een ServerSocket-object, moet u de methode listen()
aanroepen. In deze modus verzendt het ServerSocket-object connect
-gebeurtenissen wanneer een client via het TCP-protocol verbinding maakt met het gebonden adres en de poort. Het ServerSocket-object blijft luisteren naar extra verbindingen totdat u de methode close()
aanroept.
TCP-verbindingen zijn blijvend, dat wil zeggen dat de verbinding bestaat totdat deze door een van beide kanten worden gesloten (of als er een ernstige netwerkfout optreedt). De gegevens die via de verbinding worden verzonden, worden opgesplitst in verzendbare pakketten en aan de andere kant weer bij elkaar gevoegd. De levering is voor alle pakketten gegarandeerd. Pakketten die verloren raken worden opnieuw verzonden. Over het algemeen wordt de beschikbare bandbreedte van het netwerk beter beheerd met het TCP-protocol dan met het UDP-protocol. De meeste AIR-toepassingen waarvoor socketcommunicatie is vereist moeten de ServerSocket- en Socket-klassen gebruiken in plaats van de DatagramSocket-klasse.
De ServerSocket-klasse kan alleen worden gebruikt in Adobe AIR-toepassingen en alleen in de beveiligingssandbox van de toepassing.
Lees voor meer informatie over beveiliging het onderwerp Security in het Flash Player Developer Center.
Verwante API-elementen
Eigenschap | Gedefinieerd door | ||
---|---|---|---|
bound : Boolean [alleen-lezen]
Geeft aan of het socketobject gekoppeld is aan een lokaal adres en een lokale poort. | ServerSocket | ||
constructor : Object
Verwijzing naar het klasseobject of de constructorfunctie van een bepaalde objectinstantie. | Object | ||
isSupported : Boolean [statisch] [alleen-lezen]
Geeft aan of ServerSocket-functies in de runtimeomgeving worden ondersteund of niet. | ServerSocket | ||
listening : Boolean [alleen-lezen]
Geeft aan of de serversocket luistert naar inkomende verbindingen. | ServerSocket | ||
localAddress : String [alleen-lezen]
Het IP-adres waarnaar de socket luistert. | ServerSocket | ||
localPort : int [alleen-lezen]
De poort waarnaar de socket luistert. | ServerSocket |
Methode | Gedefinieerd door | ||
---|---|---|---|
Maakt een ServerSocket-object. | ServerSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registreert een gebeurtenislistenerobject bij een object EventDispatcher, zodat de listener een melding van een gebeurtenis ontvangt. | EventDispatcher | ||
Koppelt deze socket aan het opgegeven lokale adres en de lokale poort. | ServerSocket | ||
Sluit de socket af en stopt met luisteren naar verbindingen. | ServerSocket | ||
Verzendt een gebeurtenis naar de gebeurtenisstroom. | EventDispatcher | ||
Controleert of het object EventDispatcher listeners heeft geregistreerd voor een specifiek type gebeurtenis. | EventDispatcher | ||
Geeft aan of voor een object een opgegeven eigenschap is gedefinieerd. | Object | ||
Geeft aan of een instantie van de klasse Object zich in de prototypeketen van het object bevindt dat als parameter is opgegeven. | Object | ||
Initieert dat er wordt geluisterd naar TCP-verbindingen met het gekoppelde IP-adres en -poort. | ServerSocket | ||
Geeft aan of de opgegeven eigenschap bestaat en kan worden opgesomd. | Object | ||
Verwijdert een listener uit het object EventDispatcher. | EventDispatcher | ||
Stelt de beschikbaarheid van een dynamische eigenschap voor lusbewerkingen in. | Object | ||
Geeft de tekenreeksweergave van dit object weer, geformatteerd volgens de locatiespecifieke conventies. | Object | ||
Retourneert een tekenreeksrepresentatie van het opgegeven object. | Object | ||
Retourneert de primitieve waarde van het opgegeven object. | Object | ||
Controleert of een gebeurtenislistener is geregistreerd bij dit object EventDispatcher of een van de voorouders voor het opgegeven type gebeurtenis. | EventDispatcher |
Gebeurtenis | Overzicht | Gedefinieerd door | ||
---|---|---|---|---|
[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de besturingssysteemfocus krijgt en actief wordt. | EventDispatcher | |||
Wordt verstuurd wanneer het besturingssysteem deze socket sluit. | ServerSocket | |||
Wordt verzonden wanneer een socket op afstand verbinding zoekt met deze serversocket. | ServerSocket | |||
[uitgezonden gebeurtenis] Wordt verzonden wanneer Flash Player of de AIR-toepassing de systeemfocus verliest en inactief wordt. | EventDispatcher |
bound | eigenschap |
isSupported | eigenschap |
listening | eigenschap |
localAddress | eigenschap |
localPort | eigenschap |
ServerSocket | () | Constructor |
public function ServerSocket()
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Maakt een ServerSocket-object.
Gegenereerde uitzondering
SecurityError — Deze fout treedt op wanneer de inhoud van de aanroep wordt uitgevoerd buiten de beveiligingssandbox van de AIR-toepassing.
|
bind | () | methode |
public function bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Koppelt deze socket aan het opgegeven lokale adres en de lokale poort.
Parameters
localPort:int (default = 0 ) — Het nummer van de poort waarmee verbinding moet worden gemaakt op de lokale computer. Als localPort op 0 is ingesteld (de standaardwaarde) wordt de volgende beschikbare systeempoort gekoppeld. Toestemming voor het maken van een verbinding met een poortnummer onder 1024 is afhankelijk van het systeembeveiligingsbeleid. Op Mac- en Linux-systemen moet de toepassing bijvoorbeeld actief zijn met hoofdbevoegdheden voor het maken van een verbinding met poorten onder 1024.
| |
localAddress:String (default = "0.0.0.0 ") — Het IP-adres op de lokale machine waaraan wordt gekoppeld. Dit adres kan een IPv4- of IPv6-adres zijn. Als localAddress is ingesteld op 0.0.0.0 (de standaardinstelling), voegt de socket een listener toe op alle beschikbare IPv4-adressen. Als u op alle beschikbare IPv6-adressen een listener wilt toevoegen, moet u "::" opgeven als het argument voor localAddress . Om een IPv6-adres te gebruiken, moet de computer en het netwerk zijn geconfigureerd, zodat deze IPv6 ondersteunen. Bovendien kan een socket die gebonden is aan een IPv4-adres geen verbinding maken met een socket met een IPv6-adres. Op dezelfde manier geldt dat een socket die gebonden is aan een IPv6-adres geen verbinding kan maken met een socket met een IPv4-adres. Het adrestype moet overeenkomen.
|
Gegenereerde uitzondering
RangeError — Deze fout treedt op als localPort kleiner dan 0 of groter dan 65535 is.
| |
ArgumentError — Deze fout treedt op als localAddress syntactisch ongeldig is.
| |
IOError — als de socket niet kan worden gebonden, bijvoorbeeld als:
|
close | () | methode |
public function close():void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Sluit de socket af en stopt met luisteren naar verbindingen.
Gesloten sockets kunnen niet meer worden geopend. In plaats hiervan moet u een nieuwe ServerSocket maken.
Gegenereerde uitzondering
Error — Deze fout treedt op als de socket niet kan worden gesloten of als de socket niet open is.
|
listen | () | methode |
public function listen(backlog:int = 0):void
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Initieert dat er wordt geluisterd naar TCP-verbindingen met het gekoppelde IP-adres en -poort.
De methode listen()
wordt meteen geretourneerd. Wanneer u listen()
hebt aangeroepen, verzendt het object ServerSocket een gebeurtenis connect
zodra er wordt geprobeerd om verbinding te maken. De eigenschap socket
van het ServerSocketConnectEvent-gebeurtenisobject verwijst naar een Socket-object dat staat voor de server-clientverbinding.
Met de parameter backlog
wordt aangegeven hoeveel aangevraagde verbindingen in de wachtrij staan wanneer de connect
-gebeurtenissen worden verwerkt door uw toepassing. Als de wachtrij vol is, worden extra verbindingen geweigerd en wordt er geen connect
-gebeurtenis verzonden. Als de standaardwaarde nul is opgegeven, wordt de maximale lengte voor de wachtrij op het desbetreffende systeem gebruikt. Deze lengte is afhankelijk van het platform en kan per computer worden geconfigureerd. Als de opgegeven lengte de maximale lengte voor het systeem overschrijdt, worden de maximale lengte voor het systeem gebruikt. Er is geen manier om de werkelijke achterstand vast te stellen. (De maximale lengte voor het systeem wordt bepaald door de instelling SOMAXCONN van het TCP-netwerksubsysteem op de hostcomputer.)
Parameters
backlog:int (default = 0 ) — De maximale lengte van de wachtrij voor aangevraagde verbindingen. Als de waarde van backlog nul is, is de lengte van de wachtrij ingesteld op de maximale systeemwaarde.
|
Gegenereerde uitzondering
IOError — Deze fout treedt op als de socket niet open of gebonden is. Deze fout treedt ook op als de oproep naar listen() wegens een andere reden mislukt.
| |
RangeError — Deze fout treedt op als de parameter backlog minder is dan nul.
|
close | Gebeurtenis |
flash.events.Event
eigenschap Event.type =
flash.events.Event.CLOSE
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Wordt verstuurd wanneer het besturingssysteem deze socket sluit.
De gebeurtenis close
wordt niet verzonden wanneer de methode ServerSocket close()
wordt aangeroepen. Als andere objecten in uw toepassing afhankelijk zijn van de close
-gebeurtenis, kunt u de gebeurtenis handmatig verzenden voordat u de methode close()
aanroept.
Event.CLOSE
definieert de waarde van de eigenschap type
van een close
-gebeurtenisobject.
Deze gebeurtenis heeft de volgende eigenschappen:
Eigenschap | Waarde |
---|---|
bubbles | false |
cancelable | false ; er is geen standaardgedrag om te annuleren. |
currentTarget | Het object dat het gebeurtenisobject actief verwerkt met een gebeurtenislistener. |
target | Het object waarvan de verbinding is gesloten. |
connect | Gebeurtenis |
flash.events.ServerSocketConnectEvent
eigenschap ServerSocketConnectEvent.type =
flash.events.ServerSocketConnectEvent.CONNECT
Taalversie: | ActionScript 3.0 |
Runtimeversies: | AIR 2 |
Wordt verzonden wanneer een socket op afstand verbinding zoekt met deze serversocket.
Definieert de waarde van de eigenschaptype
van een ServerSocketConnectEvent
-gebeurtenisobject.
Deze gebeurtenis heeft de volgende eigenschappen:
Eigenschap | Waarde |
---|---|
bubbles | false . |
cancelable | false ; er is geen standaardgedrag om te annuleren. |
currentTarget | Dit ServerSocket-object. |
target | Dit ServerSocket-object. |
Socket | Het Socket-object waarin de nieuwe verbinding wordt weergegeven. |
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; } } }
Wed Jun 13 2018, 11:42 AM Z