ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flash.net 

ServerSocket  - AS3

Paketflash.net
Klassepublic class ServerSocket
VererbungServerSocket Inheritance EventDispatcher Inheritance Object

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Die ServerSocket-Klasse ermöglicht es, dass Code als Server für TCP-Verbindungen (Transport Control Protocol) fungiert.

Unterstützung von AIR-Profilen: Diese Funktion wird auf allen Desktopbetriebssystemen, unter IOS (beginnend mit AIR 3.8) und unter Android unterstützt (beginnend mit AIR 3.8). Bei Geräten mit AIR für TV wird diese Funktion nicht unterstützt. Mit der ServerSocket.isSupported-Eigenschaft können Sie testen, ob zur Laufzeit Unterstützung gegeben ist. Weitere Informationen zum API-Support über mehrere Profile finden Sie unter Unterstützung von AIR-Profilen.

Ein TCP-Server wartet auf ankommende Verbindungen von Remoteclients. Wenn ein Client versucht, eine Verbindung herzustellen, setzt ServerSocket ein connect-Ereignis ab. Das ServerSocketConnectEvent -Objekt, das für das Ereignis abgesetzt wurde, stellt ein Socket-Objekt bereit, das die TCP-Verbindung zwischen dem Server und dem Client repräsentiert. Verwenden Sie dieses Socket-Objekt für die nachfolgende Kommunikation mit dem verbundenen Client. Sie können die Clientadresse und den Port ggf. vom Socket-Objekt beziehen.

Hinweis: Beachten Sie, dass Ihre Anwendung dafür zuständig ist, einen Verweis auf das Client-Socket-Objekt zu verwalten. Andernfalls wird dieses Objekt bei der Speicherbereinigung (Garbage Collection) berücksichtig und kann zur Laufzeit ohne Warnung gelöscht werden.

Um ein ServerSocket-Objekt in den wartenden Zustand zu versetzen, rufen Sie die listen()-Methode auf. Im wartenden Zustand setzt das ServerSocket-Objekt connect-Ereignisse ab, wenn ein Client, der TCP verwendet, versucht, eine Verbindung zu der gebundenen Adresse und dem Port herzustellen. Das ServerSocket-Objekt wartet auf weitere Verbindungen, bis Sie die close()-Methode aufrufen.

TCP-Verbindungen sind beständig – sie sind vorhanden, bis eine Seite der Verbindung diese schließt (oder bis ein schwerwiegender Netzwerkfehler auftritt). Alle Daten, die über die Verbindung gesendet werden, werden in übertragbare Pakete zerlegt und am anderen Ende wieder zusammengesetzt. Alle Pakete kommen garantiert (in Grenzen) an; verloren gegangene Pakete werden erneut übertragen. Im Allgemeinen verwaltet das TCP-Protokoll die verfügbare Netzwerkbandbreite besser als das UDP-Protokoll. Die meisten AIR-Anwendungen, die Socketkommunikation benötigen, sollten eher die ServerSocket- und die Socket-Klasse verwenden als die DatagramSocket-Klasse.

Die ServerSocket-Klasse kann nur in Adobe AIR-Anwendungen und nur in der Sicherheitssandbox der Anwendung verwendet werden.

Weitere Informationen zum Thema Sicherheit finden Sie im Flash Player Developer Center im Abschnitt Sicherheit.

Beispiele anzeigen

Verwandte API-Elemente



Öffentliche Eigenschaften
 EigenschaftDefiniert von
      bound : Boolean
[schreibgeschützt] Gibt an, ob der Socket an eine lokale Adresse und einen Port gebunden ist.
ServerSocket
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
      isSupported : Boolean
[statisch] [schreibgeschützt] Gibt an, ob ServerSocket-Funktionen in der Laufzeitumgebung unterstützt werden.
ServerSocket
      listening : Boolean
[schreibgeschützt] Gibt an, ob der Serversocket auf ankommende Verbindungen wartet.
ServerSocket
      localAddress : String
[schreibgeschützt] Die IP-Adresse, die der Socket überwacht.
ServerSocket
      localPort : int
[schreibgeschützt] Der Port, den der Socket überwacht.
ServerSocket
Öffentliche Methoden
 MethodeDefiniert von
  
    ServerSocket()
Erstellt ein ServerSocket-Objekt.
ServerSocket
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
Registriert ein Ereignis-Listener-Objekt bei einem EventDispatcher-Objekt, sodass der Listener über ein Ereignis benachrichtigt wird.
EventDispatcher
  
    bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void
Bindet diesen Socket an die angegebene lokale Adresse und den angegebenen Port.
ServerSocket
  
    close():void
Schließt den Socket und beendet die Überwachung von Verbindungen.
ServerSocket
 Inherited
Sendet ein Ereignis in den Ereignisablauf.
EventDispatcher
 Inherited
Überprüft, ob das EventDispatcher-Objekt Listener für einen bestimmten Ereignistyp registriert hat.
EventDispatcher
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
  
    listen(backlog:int = 0):void
Leitet die Überwachung von TCP-Verbindungen an der gebundenen IP-Adresse und am Port ein.
ServerSocket
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
Entfernt einen Listener aus dem EventDispatcher-Objekt.
EventDispatcher
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas.
Object
 Inherited
Gibt das angegebene Objekt als String zurück.
Object
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
 Inherited
Überprüft, ob bei diesem EventDispatcher-Objekt oder bei einem seiner Vorgänger ein Ereignis-Listener für einen bestimmten Ereignistyp registriert ist.
EventDispatcher
Ereignisse
 Ereignis Übersicht Definiert von
 Inherited[broadcast event] Wird ausgelöst, wenn Flash Player oder eine AIR-Anwendung den Betriebssystemfokus erhält und aktiv wird.EventDispatcher
  
    close
Wird abgesetzt, wenn das Betriebssystem diesen Socket schließt.ServerSocket
  
    connect
Wird abgesetzt, wenn ein Remotesocket versucht, eine Verbindung zu diesem Serversocket herzustellen.ServerSocket
 Inherited[broadcast event] Wird ausgelöst, wenn Flash Player- oder die AIR-Anwendung den Fokus verliert und inaktiv wird.EventDispatcher
Eigenschaftendetails
    

bound

Eigenschaft
bound:Boolean  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Gibt an, ob der Socket an eine lokale Adresse und einen Port gebunden ist.



Implementierung
    public function get bound():Boolean

Verwandte API-Elemente

    

isSupported

Eigenschaft 
isSupported:Boolean  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Gibt an, ob ServerSocket-Funktionen in der Laufzeitumgebung unterstützt werden.



Implementierung
    public static function get isSupported():Boolean
    

listening

Eigenschaft 
listening:Boolean  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Gibt an, ob der Serversocket auf ankommende Verbindungen wartet.



Implementierung
    public function get listening():Boolean

Verwandte API-Elemente

    

localAddress

Eigenschaft 
localAddress:String  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Die IP-Adresse, die der Socket überwacht.



Implementierung
    public function get localAddress():String

Verwandte API-Elemente

    

localPort

Eigenschaft 
localPort:int  [schreibgeschützt]

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Der Port, den der Socket überwacht.



Implementierung
    public function get localPort():int

Verwandte API-Elemente

Konstruktordetails
    

ServerSocket

()Konstruktor
public function ServerSocket()

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Erstellt ein ServerSocket-Objekt.


Auslöser
SecurityError — Dieser Fehler tritt auf, wenn der aufrufende Inhalt außerhalb der Sicherheitssandbox der AIR-Anwendung ausgeführt wird.
Methodendetails

    bind

()Methode
public function bind(localPort:int = 0, localAddress:String = "0.0.0.0"):void

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Bindet diesen Socket an die angegebene lokale Adresse und den angegebenen Port.

Parameter

localPort:int (default = 0) — Die Nummer des Ports, zu dem auf dem lokalen Computer eine Bindung hergestellt werden soll. Wenn localPort auf 0 (Standardeinstellung) gesetzt ist, wird der nächste verfügbare Systemport gebunden. Die Berechtigung für die Verbindung mit einer Portnummer unter 1024 wird von der Sicherheitsrichtlinie des Systems geregelt. Bei Mac- und Linux-Systemen muss die Anwendung zum Beispiel mit Root-Berechtigung ausgeführt werden, damit Verbindungen zu Ports unter 1024 hergestellt werden können.
 
localAddress:String (default = "0.0.0.0") — Die IP-Adresse auf dem lokalen Computer, zu der eine Bindung hergestellt werden soll. Diese Adresse kann eine IPv4- oder IPv6-Adresse sein. Wenn localAddress auf 0.0.0.0 (die Standardeinstellung) gesetzt ist, wartet der Socket an allen verfügbaren IPv4-Adressen. Um an allen verfügbaren IPv6-Adressen zu warten, müssen Sie "::" als localAddress-Argument angeben. Um eine IPv6-Adresse zu verwenden, müssen der Computer und das Netzwerk so konfiguriert sein, dass sie IPv6 unterstützen. Ein an eine IPv4-Adresse gebundener Socket kann keine Verbindung zu einem Socket mit einer IPv6-Adresse herstellen. Entsprechend kann ein an eine IPv6-Adresse gebundener Socket keine Verbindung zu einem Socket mit einer IPv4-Adresse herstellen. Der Adresstyp muss übereinstimmen.


Auslöser
RangeError — Dieser Fehler tritt auf, wenn localPort kleiner als 0 oder größer als 65535 ist.
 
ArgumentError — Dieser Fehler tritt auf, wenn localAddress keine syntaktisch gut strukturierte Adresse ist.
 
IOError — wenn der Socket nicht gebunden werden kann, zum Beispiel:
  • der zugrundeliegende Netzwerksocket (IP und Port) ist bereits von einem anderen Objekt oder Prozess gebunden.
  • die Anwendung wird unter einem Benutzerkonto ausgeführt, das keine ausreichenden Berechtigungen für die Bindung an den Port hat. Berechtigungsprobleme treten häufig auf, wenn versucht wird, eine Bindung zu häufig genutzten Ports (localPort < 1024) herzustellen
  • dieses ServerSocket-Objekt ist bereits gebunden. (Rufen Sie close() auf, bevor Sie eine Bindung mit einem anderen Socket herstellen.)
  • wenn localAddress keine gültige lokale Adresse ist.

    close

()Methode 
public function close():void

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Schließt den Socket und beendet die Überwachung von Verbindungen.

Geschlossene Sockets können nicht erneut geöffnet werden. Erstellen Sie stattdessen eine neue ServerSocket-Instanz.


Auslöser
Error — Dieser Fehler tritt auf, wenn der Socket nicht geschlossen werden konnte oder der Socket nicht geöffnet war.

    listen

()Methode 
public function listen(backlog:int = 0):void

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Leitet die Überwachung von TCP-Verbindungen an der gebundenen IP-Adresse und am Port ein.

Die listen()-Methode gibt sofort einen Wert zurück. Nachdem Sie listen() aufgerufen haben, setzt das ServerSocket-Objekt jedes Mal ein connect-Ereignis ab, wenn versucht wird, eine Verbindung herzustellen. Die socket-Eigenschaft des ServerSocketConnectEvent-Ereignisobjekts verweist auf ein Socket-Objekt, das die Server-Client-Verbindung repräsentiert.

Der backlog-Parameter gibt an, wie viele ausstehende Verbindungen sich in der Warteschlange befinden, während die connect-Ereignisse von Ihrer Anwendung verarbeitet werden. Wenn die Warteschlange voll ist, werden weitere Verbindungen abgelehnt, ohne dass ein connect-Ereignis abgesetzt wird. Wenn der Standardwert null angegeben wird, wird der Systemhöchstwert für die Länge der Warteschlange verwendet. Diese Länge variiert je nach Plattform und kann auf dem Computer konfiguriert werden. Wenn der angegebene Wert den Systemhöchstwert übersteigt, wird stattdessen der Systemhöchstwert für die Länge verwendet. Es werden keine Mittel zum Erkennen des tatsächlichen Backlogwerts bereitgestellt. (Der Systemhöchstwert wird von der SOMAXCONN-Einstellung des TCP-Netzwerksystems auf dem Hostcomputer bestimmt.)

Parameter

backlog:int (default = 0) — Die maximale Länge der Warteschlange mit ausstehenden Verbindungen. Wenn backlog den Wert 0 hat, wird die Warteschlangenlänge auf den Systemhöchstwert gesetzt.


Auslöser
IOError — Dieser Fehler tritt auf, wenn der Socket nicht geöffnet oder gebunden ist. Dieser Fehler tritt auch auf, wenn der Aufruf von listen() aus einem anderen Grund fehlschlägt.
 
RangeError — Dieser Fehler tritt auf, wenn der backlog-Parameter kleiner als null ist.
Ereignisdetails
    

close

Ereignis
Ereignisobjekttyp: flash.events.Event
Eigenschaft Event.type = flash.events.Event.CLOSE

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Wird abgesetzt, wenn das Betriebssystem diesen Socket schließt.

Das close-Ereignis wird nicht abgesetzt, wenn die close()-Methode von ServerSocket aufgerufen wird. Wenn andere Objekte in Ihrer Anwendung auf das close-Ereignis angewiesen sind, können Sie das Ereignis manuell absetzen, bevor Sie die close()-Methode aufrufen.

Die Event.CLOSE-Konstante definiert den Wert der type-Eigenschaft eines close-Ereignisobjekts.

Dieses Ereignis verfügt über die folgenden Eigenschaften:

EigenschaftWert
bubblesfalse
cancelablefalse. Es gibt kein Standardverhalten, das abgebrochen werden kann.
currentTargetDas Objekt, welches das Ereignisobjekt aktiv mit einem Ereignis-Listener verarbeitet.
targetDas Objekt, dessen Verbindung geschlossen wurde.
    

connect

Ereignis  
Ereignisobjekttyp: flash.events.ServerSocketConnectEvent
Eigenschaft ServerSocketConnectEvent.type = flash.events.ServerSocketConnectEvent.CONNECT

Sprachversion: ActionScript 3.0
Laufzeitversionen: AIR 2

Wird abgesetzt, wenn ein Remotesocket versucht, eine Verbindung zu diesem Serversocket herzustellen.

Definiert den Wert der type-Eigenschaft eines ServerSocketConnectEvent-Ereignisobjekts.

Dieses Ereignis verfügt über die folgenden Eigenschaften:

EigenschaftWert
bubblesfalse.
cancelablefalse, es gibt kein Standardverhalten, das abgebrochen werden kann.
currentTargetDieses ServerSocket-Objekt.
targetDieses ServerSocket-Objekt.
socketDas Socket-Objekt, das die neue Verbindung darstellt.
ServerSocketExample.as

Im folgenden Beispiel wird ein Socketserver erstellt. Um den Server zu verwenden, binden Sie den Socket an einen lokalen Port und stellen Sie dann von einer anderen Anwendung eine Verbindung zu diesem Port her. Der Server versteht nur UTF-8-Strings
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;
        }        
    }
}




[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.