Inhaltsverzeichnis

24.1.2.0 Klasse ServerSocket (gb.net)

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

24.1.2.0.1 Accept()-Methode

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 

24.1.2.0.2 Eigenschaften

Die Klasse ServerSocket verfügt über diese Eigenschaften:

EigenschaftDatentypBeschreibung
CountIntegerGibt die Anzahl der Verbindungssockets zurück, die mit der Accept()-Methode erzeugt wurden.
TypeIntegerGibt 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).
PortIntegerGibt den Server-Socket-Port für Sockets vom Server-Typ Net.Internet zurück oder legt ihn fest.
PathStringGibt den Server-Socket-Pfad für Unix-Sockets vom Server-Typ Net.Local zurück oder legt ihn fest.
StatusIntegerGibt den Status des Server-Sockets als Konstante der Net-Klasse zurück.
TimeoutIntegerGibt 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

24.1.2.0.3 Methoden

Die Klasse ServerSocket besitzt folgende Methoden:

MethodeRückgabetypBeschreibung
Accept ( ) SocketVerwenden 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:

24.1.2.0.4 Ereignisse

Die Klasse ServerSocket hat nur diese beiden Ereignisse:

EreignisBeschreibung
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:

Download

Artikel

Download