Mit der Klasse ServerSocket (gb.net) wird das server-seitige Warten auf eingehende Verbindungen und deren Aufbau ermöglicht. Sie ist nicht für die eigentliche Kommunikation vorgesehen. Die Klasse kann sowohl für das TCP- als auch für das Unix-Protokoll verwendet werden. Beachten Sie: Den Unix-Sockets ist ein eigenes Kapitel in '24.1.4 UnixSocket' gewidmet.
Die Klasse führt ihre Arbeit asynchron aus, so dass Ihr Programm nicht durch die interne Arbeit des Server-Objekts gestoppt wird.
So erzeugen Sie einen neuen Internet-Server-Socket:
Dim hServerSocket As ServerSocket hServerSocket = New ServerSocket ( [ Port As Integer, MaxConn As Integer ] ) As "EventName"
Alternative:
Dim hServerSocket As ServerSocket hServerSocket = New ServerSocket As "EventName" hServerSocket.Type = Net.Internet hServerSocket.Port = iPort hServerSocket.Listen(10) ' Der Server baut maximal 10 TCP/IP-Verbindungen auf
So erzeugen Sie einen neuen Unix-Server-Socket:
Dim hServerSocket As ServerSocket hServerSocket = New ServerSocket ( [ Path As String, MaxConn As Integer ] ) As "EventName"
Alternative:
Dim hServerSocket As ServerSocket hServerSocket = New ServerSocket As "EventName" hServerSocket.Type = Net.Unix hServerSocket.Path = sPath hServerSocket.Listen(10) ' Der Server baut maximal 10 Verbindungen auf
Diese Klasse ist so konzipiert, dass sie einen Server präsentiert, der angeforderte Verbindungen annimmt oder ablehnt. Die gesamte restliche Arbeit wie zum Beispiel das Senden von Daten oder das Empfangen von Daten wird von einem Socket ausgeführt, der vom Server erzeugt und gestartet wird, einer pro Verbindung Server ↔ Client.
Mit der folgenden Kontroll-Struktur inspizieren Sie alle Sockets, die mit der Accept()-Methode erzeugt wurden:
Dim hServerSocket As ServerSocket Dim hConnetionSocket As Socket For Each hConnetionSocket In hServerSocket ... Next
Die Klasse ServerSocket verfügt über diese Eigenschaften:
Eigenschaft | Datentyp | Beschreibung |
---|---|---|
Count | Integer | Gibt die Anzahl der Verbindungssockets zurück, die mit der Accept()-Methode erzeugt wurden. |
Type | Integer | Gibt den zu verwendenden Socket-Typ zurück oder legt ihn fest. Der Socket-Typ kann einer der folgenden Werte sein: Net.Internet (1) oder Net.Local (0). |
Port | Integer | Gibt den Server-Socket-Port für Sockets vom Server-Typ Net.Internet zurück oder legt ihn fest. |
Path | String | Gibt den Server-Socket-Pfad für Unix-Sockets vom Server-Typ Net.Local zurück oder legt ihn fest. |
Status | Integer | Gibt den Status des Server-Sockets als Konstante der Net-Klasse zurück. |
Timeout | Integer | Gibt den Server-Socket-Timeout in Millisekunden zurück oder setzt ihn. |
Tabelle 24.1.2.0.1 : Eigenschaften der Klasse ServerSocket
Hinweise:
If sBuf = "start-massive-transfer" Then btnPause.Enabled = False Print "Doing massive transfer." MyServerSocket.Pause() '-- Prevent this priority connection from keeping the others waiting too long '-- Verhindern Sie, dass diese Prioritätsverbindung die anderen zu lange warten lässt MyServerSocket.Timeout = 10 * 1000 Else If sBuf = "end-massive-transfer" Then Print "Massive transfer done." MyServerSocket.Timeout = 0 '-- Retain btnPause control of Pause/Resume state '-- btnPause-Steuerung des Pause/Fortsetzungs-Status beibehalten If Not Waiting Then MyServerSocket.Resume() btnPause.Enabled = True Endif
Die Klasse ServerSocket besitzt folgende Methoden:
Methode | Rückgabetyp | Beschreibung |
---|---|---|
Accept ( ) | Socket | Verwenden Sie diese Methode, um eine Verbindungsanforderung von einem Client zu akzeptieren. Sie müssen diese Methode immer im Ereignis Connection verwenden. Die Funktion gibt ein mit dem Client verbundenes Socket-Objekt zurück, mit dem Sie diese Verbindung verwalten und die Kommunikation durchführen können. Das neue Socket-Objekt wird automatisch an den Ereignisbeobachter „Socket“ angehängt. |
Close () | - | Verwenden Sie diese Methode, um alle vom Server eingerichteten Verbindungen zu schließen und den Lausch-Vorgang zu beenden. |
Listen ( [ MaxConn As Integer ] ) | - | Startet das Abhören am ausgewählten TCP-Port oder am lokalen Pfad. Optional können Sie den Parameter 'MaxConn' übergeben. |
Pause () | - | Verwenden Sie diese Methode, um alle bestehenden Verbindungen aufrechtzuerhalten. Sie nehmen aber keine weiteren an – bis Sie die Resume()-Methode verwenden. |
Resume () | - | Verwenden Sie diese Methode, um das Abhören auf neue Verbindungsanfragen wieder zu starten, wenn Sie diesen Prozess vorher mit der Pause()-Methode gestoppt haben. |
Tabelle 24.1.2.0.2 : Methoden der Klasse ServerSocket
Hinweise:
Die Klasse ServerSocket hat nur diese beiden Ereignisse:
Ereignis | Beschreibung |
---|---|
Connection ( RemoteHostIP As String ) | Das Ereignis ausgelöst, wenn ein Client versucht, eine Verbindung zum Server herzustellen (Request). Das ist die einzige Stelle im Quelltext, an der Sie diese Verbindung akzeptieren oder ablehnen können. |
Error ( ) | Dieses Ereignis wird ausgelöst, wenn innerhalb der Listen()-Methode Fehler auftraten. Die Status-Eigenschaft nimmt einen Wert kleiner Null an. |
Tabelle 24.1.2.0.3 : Ereignisse der Klasse ServerSocket
Hinweise:
Artikel