| Zitat: |
| Was kann UDP im Vergleich zu TCP besser/schlechter? |
UDP ist ein verbindungsloses Protokoll, d.h. der Three-Way-Handshake fällt weg. Die Daten werden einfach ins Netz geschickt, ohne auf eine Bestätigung zu warten. Das hat zwar den Vorteil, dass es schneller ist, aber die Wahrscheinlichkeit, dass ein Packet verloren geht ist größer.
TCP hingegen ist ein verbindungbehaftetes Protokoll. Die Daten kommen (fast) immer an. Der Three-Way-Handshake ist also nix anderes als etwas in der Art: "Achtung! Kommt was!" - "OK!" - "Habs empfangen!".
Ist aber wegen dieser Sicherheitsvorkehrung langsamer.
| Zitat: |
| Wozu dient die BroadCast-Funktion, die sowohl Client und Server haben? |
Mittels des Broadcast kannst du an jeden Client des Netzwerks eine Nachricht schicken. Der Broadcast ist ein Packet, dass an eine spezielle Adresse verschickt wird (z.B. 192.168.1.255). Alle Computer greifen dieses Packet ab.
| Zitat: |
| Wie werden Daten gesendet/empfangen? |
Wie ich schon mal geschrieben hab:
| O'rallY hat folgendes geschrieben: |
Um UPD zu nutzen, würd' ich dir die Indy-Kompos vorschlagen ([url]www.indyproject.org[/url]). Das sind TIdUPDClient u. TIdUPDServer. Der Umgang ist recht einfach. Ein Beispiel:
IdUDPServer1 Einstellungen:
- Active: true
- DefaultPort: z.B. 1234
- Falls du Broadcast benutzen willst: BroadcastEnabled: true
IdUDPClient1 Einstellungen:
- Port: z.B. 1234
- Falls du Broadcast benutzen willst: BroadcastEnabled: true
Die Unit IdSocketHandle muss noch eingebunden werden
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| 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; | |
| Zitat: |
| Wie verbinde ich den Client zum Server? |
Wie ich schon erklärt hab: Gar nicht!
Hab ich dir helfen können?