Autor Beitrag
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Mi 19.02.03 20:12 
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 :!:
ausblenden 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); // hier muss auch der Port angegeben werden
   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 :wink: .
Auch bei Sprachübertragungssoftware wird des Öfteren UDP verwendet.


O'rallY

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...