Was ist UDP?
UDP (User Datagram Protocol) ist wie z.B. TCP ein Netzwerkprotokoll.
UDP ist ein verbindungsloses Protokoll, d.h.: Beispielsweise gibt es keinen Three-Way-Handshake wie bei TCP. Die Daten werden einfach ins Netz geschickt, ohne auf eine Bestätigung zu warten, dass die Daten angekommen sind. Das bringt zwar eine größere Geschwindigkeit, doch ist die Wahrscheinlichkeit, dass ein Packet verloren geht, größer.
Eine der Stärken bzw. Vorteile UDPs ist die Broadcast-Funktion.
Was ist ein Broadcast?
Ein Broadcast ist eine Datememission, die jeder Computer im Netzwerk abgreifen kann. Dazu wird ein Datenpacket/ werden Datenpackete an eine Spezialadresse (z.B. 192.168.1.
255) geschickt. Somit können alle Computer dieses Subnetzes den Broadcast empfangen.
Wie realisiert man mit den Indy-Komponenten TIdUDPClient und TIdUDPServer ([url]www.indyproject.org[/url]) ein Datenaustausch mittels UDP?
TIdUDPServer Einstellungen:
- Active: true
- DefaultPort: z.B. 1234
- BroadcastEnabled: true
TIdUDPClient Einstellungen:
- Port: z.B. 1234
- BroadcastEnabled: true
Die Unit
IdSocketHandle muss noch eingebunden werden
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var RecText: string; begin SetLength(RecText, AData.Size); AData.ReadBuffer(PChar(RecText)^, AData.Size); ShowMessage(ABinding.PeerIP + ' hat "' + RecText + '" gesendet.'); end;
procedure TForm1.Button1Click(Sender: TObject); begin IdUDPClient1.Active := true; IdUDPClient1.Send('Hello World!'); IdUDPClient1.Broadcast('Ich bin ein Broadcast!', 1234); IdUDPClient1.Active := false; end; |
Wozu verwendet man UDP?
Man sollte UDP nur dann verwenden, wenn ein gesendetes Datenpacket nicht umbedingt angekommen muss.
Ein häufges Anwendungsbeispiel sind Computerspiele: Bei der Serversuche wird häufig ein UDP-Broadcast gesendet, um zu "sehen", ob ein Server verfügbar ist. Ähnlich wie ein Sonar

.
Auch bei Sprachübertragungssoftware wird des Öfteren UDP verwendet.
O'rallY