Paket | flash.net |
Klass | public class ServerSocket |
Arv | ServerSocket EventDispatcher Object |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Stöd för AIR-profiler: Den här funktionen stöds på alla operativsystem för datorer, på iOS (från och med AIR 3.8) och på Android (från och med AIR 3.8). Den här funktionen stöds inte på enheter med AIR for TV. Du kan testa stödet vid körning med egenskapen ServerSocket.isSupported
. På sidan om stöd för AIR-profiler hittar du mer information om API-stöd för flera profiler.
En TCP-server lyssnar efter inkommande anslutningar från fjärrklienter. När en klient försöker ansluta skickar ServerSocket en connect
-händelse. Det ServerSocketConnectEvent-objekt som skickas för händelsen tillhandahåller ett Socket-objekt, som representerar TCP-anslutningen mellan servern och klienten. Använd det här Socket-objektet för all efterföljande kommunikation med den anslutna klienten. Vid behov kan du hämta klientens adress och port från Socket-objektet.
Obs! Tänk på att ditt program ansvarar för att upprätthålla en referens till klientens Socket-objekt. Annars blir objektet tillgängligt för skräpsamling och kan förstöras av miljön utan förvarning.
Om du vill försätta ett ServerSocket-objekt i avlyssningsläge anropar du metoden listen()
. I avlyssningsläget skickar ServerSocket-objektet connect
-händelser så snart en klient som använder TCP-protokollet försöker ansluta till den bundna adressen och porten. ServerSocket-objektet fortsätter att lyssna efter ytterligare anslutningar tills du anropar metoden close()
.
TCP-anslutningar är beständiga, vilket betyder att de finns tills ena änden av anslutningen stänger dem (eller ett allvarligt nätverksfel inträffar). Alla data som skickas via anslutningen delas upp i överföringsbara paket och sätts ihop igen i andra änden. Alla paket kommer i princip garanterat fram, och eventuella förlorade paket skickas om. I allmänhet hanterar TCP-protokollet den tillgängliga nätverksbandbredden bättre än UDP-protokollet. De flesta AIR-program som kräver socketkommunikation bör använda klasserna ServerSocket och Socket i stället för klassen DatagramSocket.
Klassen ServerSocket kan bara användas i Adobe AIR-program och bara i programmets säkerhetssandlåda.
Mer information om säkerhet finns i avsnittet Security på Flash Player Developer Center.
Relaterade API-element
Egenskap | Definieras med | ||
---|---|---|---|
bound : Boolean [skrivskyddad]
Anger om socketen är bunden till en lokal adress och port. | ServerSocket | ||
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
isSupported : Boolean [statisk] [skrivskyddad]
Anger om ServerSocket-funktioner stöds i körningsmiljön eller inte. | ServerSocket | ||
listening : Boolean [skrivskyddad]
Anger om serversocketen lyssnar efter inkommande anslutningar. | ServerSocket | ||
localAddress : String [skrivskyddad]
Den IP-adress som socketen lyssnar på. | ServerSocket | ||
localPort : int [skrivskyddad]
Den port som socketen lyssnar på. | ServerSocket |
Metod | Definieras med | ||
---|---|---|---|
Skapar ett ServerSocket-objekt. | ServerSocket | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registrerar ett händelseavlyssnarobjekt för ett EventDispatcher-objekt så att avlyssnaren får meddelanden om händelser. | EventDispatcher | ||
Binder den här socketen till den angivna lokala adressen och porten. | ServerSocket | ||
Stänger socketen och slutar att lyssna efter anslutningar. | ServerSocket | ||
Skickar en händelse till händelseflödet. | EventDispatcher | ||
Kontrollerar om EventDispatcher-objektet har några avlyssnare registrerade för en viss typ av händelse. | EventDispatcher | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Initierar avlyssning efter TCP-anslutningar på den bundna IP-adressen och porten. | ServerSocket | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Tar bort en avlyssnare från EventDispatcher-objektet. | EventDispatcher | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object | ||
Kontrollerar om en händelseavlyssnare är registrerad för det här EventDispatcher-objektet eller något av dess överordnade objekt för den angivna händelsetypen. | EventDispatcher |
Händelse | Sammanfattning | Definieras med | ||
---|---|---|---|---|
[utsändningshändelse] Skickas när Flash Player eller AIR får operativsystemfokus och blir aktivt. | EventDispatcher | |||
Skickas när den här socketen stängs av operativsystemet. | ServerSocket | |||
Skickas när en fjärrsocket försöker ansluta till den här serversocketen. | ServerSocket | |||
[utsändningshändelse] Skickas när Flash Player eller AIR förlorar operativsystemfokus och blir inaktivt. | EventDispatcher |
bound | egenskap |
isSupported | egenskap |
listening | egenskap |
localAddress | egenskap |
localPort | egenskap |
ServerSocket | () | Konstruktor |
public function ServerSocket()
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Skapar ett ServerSocket-objekt.
Utlöser
SecurityError — Det här felet inträffar om det anropande innehållet körs utanför AIR-programmets säkerhetssandlåda.
|
bind | () | metod |
public function bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Binder den här socketen till den angivna lokala adressen och porten.
Parametrar
localPort:int (default = 0 ) — Numret på den port som ska bindas till på den lokala datorn. Om localPort är inställt på 0 (standard) binds nästa tillgängliga systemport. Huruvida det går att ansluta till portnummer under 1024 beror på systemets säkerhetsprinciper. På till exempel Mac- och Linux-system måste programmet köras med rotbehörighet för att få ansluta till portar under 1024.
| |
localAddress:String (default = "0.0.0.0 ") — IP-adressen att binda till på den lokala datorn. Detta kan vara en IPv4- eller IPv6-adress. Om localAddress är 0.0.0.0 (standard) lyssnar socketen på alla tillgängliga IPv4-adresser. Om du vill lyssna på alla tillgängliga IPv6-adresser måste du ange "::" som localAddress -argument. Om du vill använda en IPv6-adress måste både datorn och nätverket vara konfigurerade så att de har stöd för IPv6. Dessutom kan en socket som bundits till en IPv4-adress inte ansluta till en socket med en IPv6-adress. Omvänt kan en socket som bundits till en IPv6-adress inte heller ansluta till en socket med en IPv4-adress. Adresstyperna måste matcha varandra.
|
Utlöser
RangeError — Det här felet inträffar när localPort är mindre än 0 eller större än 65535.
| |
ArgumentError — Det här felet inträffar när localAddress inte är en syntaktiskt giltig IP-adress.
| |
IOError — Om det inte går att binda socketen, till exempel när:
|
close | () | metod |
public function close():void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Stänger socketen och slutar att lyssna efter anslutningar.
Det går inte att öppna stängda socketar på nytt. Skapa en ny ServerSocket-instans i stället.
Utlöser
Error — Det här felet inträffar om det inte går att stänga socketen eller om socketen inte öppnats.
|
listen | () | metod |
public function listen(backlog:int = 0):void
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Initierar avlyssning efter TCP-anslutningar på den bundna IP-adressen och porten.
Metoden listen()
returnerar omedelbart. När du anropat listen()
skickar ServerSocket-objektet en connect
-händelse när ett anslutningsförsök görs. Egenskapen socket
för ServerSocketConnectEvent-händelseobjektet refererar till ett Socket-objekt som representerar server-/klientanslutningen.
Parametern backlog
anger hur många väntande anslutningar som köas under tiden som connect
-händelser bearbetas av programmet. Om kön är full nekas ytterligare anslutningar utan att någon connect
-händelse skickas. Om standardvärdet noll anges används systemets maximala kölängd. Den här längden varierar beroende på plattform och kan konfigureras olika på olika datorer. Om det angivna värdet överskrider systemets maximala längd används systemets maximala längd i stället. Det går inte att identifiera det faktiska värdet för kön (backlog). (Systemets maximala värde avgörs av inställningen SOMAXCONN för TCP-nätverkets delsystem på värddatorn.)
Parametrar
backlog:int (default = 0 ) — Den största tillåtna längden på kön med väntande anslutningar. Om backlog är 0 anges kölängden till det maximala systemvärdet.
|
Utlöser
IOError — Det här felet inträffar om socketen inte öppnats eller bundits. Det här felet inträffar också om anropet till listen() misslyckas av något annat skäl.
| |
RangeError — Det här felet inträffar om parametern backlog är mindre än noll.
|
close | Händelse |
flash.events.Event
egenskap Event.type =
flash.events.Event.CLOSE
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Skickas när den här socketen stängs av operativsystemet.
close
-händelsen skickas inte när metoden close()
för ServerSocket anropas. Om andra objekt i ditt program förlitar sig på close
-händelsen kan du skicka händelsen manuellt innan du anropar metoden close()
.
Event.CLOSE
-konstanten definierar värdet på type
-egenskapen i ett close
-händelseobjekt.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | false |
cancelable | false ; det finns inget standardbeteende att avbryta. |
currentTarget | Det objekt som aktivt behandlar Event-objektet med en händelseavlyssnare. |
target | Det objekt vars anslutning har stängts. |
connect | Händelse |
flash.events.ServerSocketConnectEvent
egenskap ServerSocketConnectEvent.type =
flash.events.ServerSocketConnectEvent.CONNECT
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | AIR 2 |
Skickas när en fjärrsocket försöker ansluta till den här serversocketen.
Definierar värdet påtype
-egenskapen i ett ServerSocketConnectEvent
-händelseobjekt.
Den här händelsen har följande egenskaper:
Egenskap | Värde |
---|---|
bubbles | false . |
cancelable | false , det finns inget standardbeteende att avbryta. |
currentTarget | Det här ServerSocket-objektet. |
target | Det här ServerSocket-objektet. |
socket | Det Socket-objekt som representerar den nya anslutningen. |
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, 01:40 PM Z