Inhaltsverzeichnis

24.1.3.0 Klasse UDPSocket (gb.net)

Die Klasse UDPSocket (gb.net) ermöglicht es Gambas-Programmen über UDP-Sockets zu kommunizieren. Die Klasse erbt von der Stream-Klasse, so dass Sie Standard-Stream-Methoden zum Lesen, Schreiben und Schließen des Sockets verwenden können.

24.1.3.0.1 Hinweise zum UDP-Protokoll

Im Gegensatz zum TCP-Protokoll arbeitet das UDP-Protokoll (User Datagram Protocol) verbindungslos. Das bedeutet, dass zwischen zwei Programmen mit UDP-Sockets keine Netzverbindung mit kontrolliertem Datenfluss besteht. Daher werden Sie die beiden Methoden Listen() und Accept() bei UDP-Sockets nicht finden. Es gibt auch keine Bestätigung, ob die Daten – sogenannte Datagramme – beim Kommunikationspartner angekommen sind. Es werden nur Datagramme gesendet beziehungsweise empfangen. Nicht nur deshalb gilt das UDP-Protokoll als unsicheres Protokoll.

Gut zu wissen:

Die zuletzt aufgeführten Punkte werden in den folgenden Quelltext-Fragmenten für einen UDP-Server und einen UDP-Client umgesetzt:

UDP-Server:

Public UDPServerSocket As UDPSocket
 
'-- Es wird ein UDP-Socket erzeugt ▶ SERVER
    UDPServerSocket = New UDPSocket As "UDPServerSocket"
 
    If UDPServerSocket.Status <= Net.Inactive Then        
       UDPServerSocket.Port = Val(txbPort.Text)
       UDPServerSocket.Bind()
    Endif
 
Public Sub UDPServerSocket_Read()
 
    Dim sBuffer, sQuote As String
 
    Read #UDPServerSocket, sBuffer, Lof(UDPServerSocket)    
 
'-- Run Service: Ausgabe eines zufälligen Zitates → Methode GetQuote(…) 
    sQuote = GetQuote(sBuffer)    
 
'-- Ziel-Adressierung: Host und Port 
'-- Über die Eigenschaften UDPServerSocket.SourceHost und UDPServerSocket.SourcePort findet man heraus, 
'-- woher das Datagramm kam – wer der Absender war. Damit sind die Ziel-Informationen zum Senden komplett.
 
    UDPServerSocket.TargetHost = UDPServerSocket.SourceHost
    UDPServerSocket.TargetPort = UDPServerSocket.SourcePort    
 
'-- Das Zitat wird als Datagramm an das adressierte Ziel gesendet     
    Write #UDPServerSocket, Trim(sQuote), Len(Trim(sQuote))
 
End 

UDP-Client:

Public UDPClientSocket As UDPSocket
 
'-- Es wird ein UDP-Socket erzeugt ▶ CLIENT 
    UDPClientSocket = New UDPSocket As "UDPClientSocket"
 
    If UDPClientSocket.Status <= Net.Inactive Then       
       UDPClientSocket.Port = 0 ' Standard-Port für einen UDP-Client
       UDPClientSocket.Bind()
    Endif
 
Public Sub SendDatagram()
 
'-- Ziel-Adressierung: Host und Port 
    UDPClientSocket.TargetHost = txbHost.Text
    UDPClientSocket.TargetPort = txbPort.Text
 
    Inc Application.Busy 
    '-- Ein Datagramm wird an das adressierte Ziel gesendet    
        Write #UDPClientSocket, txbRequest.Text, Len(txbRequest.Text)
    Dec Application.Busy
 
End

24.1.3.0.2 Eigenschaften

Die Klasse UDPSocket verfügt über diese Eigenschaften:

EigenschaftDatentypBeschreibung
HostStringGibt die IP-Adresse zurück, an die der UDP-Socket gebunden ist oder setzt sie.
SourceHostStringLiefert die IP-Adresse der Quelle zurück, wenn die Nachricht aus dem Internet kommt.
SourcePortIntegerLiefert den Port der Quelle zurück, wenn die Nachricht aus dem Internet kommt.
SourcePathStringLiefert den Pfad der Quelle zurück, wenn die Nachricht von einem lokalen Socket kommt.
TargetHostStringDefiniert die IP-Adresse (Ziel), wenn die Nachricht ins Internet geht.
TargetPortIntegerDefiniert den Port (Ziel), wenn die Nachricht ins Internet geht.
TargetPathStringDefiniert den Pfad (Ziel), wenn die Nachricht an einen lokalen Socket geht.
PathStringGibt den Pfad des lokalen Sockets zurück, zu dem verbunden werden soll oder legt den Pfad fest.
PortIntegerGibt die Port-Nummer zurück, die zum Binden des UDP-Sockets verwendet wird oder legt sie fest.
StatusIntegerGibt den Status des UDPSockets als Konstante der Net-Klasse zurück → Kapitel 24.x.y.
TimeoutIntegerGibt den Timeout in Millisekunden zurück oder setzt ihn.
BroadcastBooleanDiese Eigenschaft setzt oder löscht das Socket-Broadcast-Flag.

Tabelle 24.1.3.0.1 : Eigenschaften der Klasse UDPSocket

Hinweise:

24.1.3.0.3 Methoden

Die Klasse UDPSocket hat die folgenden Methoden:

MethodeRückgabetypBeschreibung
Begin ( )-Beginn der Pufferung der in den Stream geschriebenen Daten im Socket-Puffer, so dass beim Aufruf der Send-Methode alles gesendet wird.
Close ()-Schließt den UDP-Socket.
Send ( )-Sendet alle Daten auf einen Schlag, die seit dem letzten Aufruf der Begin()-Methode im Socket-Puffer gepuffert wurden.
Bind ( )-Bindet einen Socket an einen Host oder an einen Pfad, damit das Objekt mit dem Senden und Empfangen von Daten beginnen kann.
Drop ( )-Löscht alle Daten, die seit dem letzten Aufruf der Begin()-Methode im Socket-Puffer gepuffert wurden.
Peek ( )StringMit dieser Funktion können Sie Daten vom Socket empfangen. Sie darf nur verwendet werden, wenn die Verbindung aktiv ist (Status = Net.Connected), sonst wird ein Fehler ausgelöst.
ReadLine ( [ Escape As String ] )StringLiest eine Textzeile aus dem Datenstrom, wie die bei der Anweisung LINE INPUT.
Watch ( Mode As Integer, Watch As Boolean )-Starten oder stoppen Sie die Überwachung des Stream-Datei-Deskriptors zum Lesen oder Schreiben, nachdem er geöffnet wurde.

Tabelle 24.1.3.0.2 : Methoden der Klasse UDPSocket

Hinweise:

24.1.3.0.4 Ereignisse

Die Klasse UDPSocket verfügt nur über diese beiden Ereignisse:

EreignisBeschreibung
Error ( )Dieses Ereignis tritt auf, wenn Anweisungen fehlgeschlagen sind. Zum Beispiel dann, wenn ein Bindungsversuch fehlschlug. Die Status-Eigenschaft hat dann einen negativen Wert, der den Fehlertyp widerspiegelt. Der UDP-Socket wird nach einem Fehler automatisch geschlossen!
Read ( )Dieses Ereignis wird ausgelöst, wenn Daten vom Kommunikationspartner der anderen Seite der IP-Verbindung im Socket ankommen.

Tabelle 24.1.3.0.3 : Ereignisse der Klasse UDPSocket

Hinweis zum Ereignis Error(): Die Kenntnis ausgewählter Fehler-Konstanten kann Ihnen helfen, den Grund für auftretende Fehler zu erkennen:

Download

Artikel

Download