Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Indy TCP Server/Client: Streams senden/empfangen und Unterschied zu Strings???

  Alt 20. Apr 2014, 18:57
... muss ich jeden zu übertragenen String mit einer eindeutigen Zeichenkombination beenden, damit der Client die "zusammengewachsene" Datenpakete auseinander halten kann
Das ist die wichtigste Frage bei TCP überhaupt.
Zunächst einmal ist TCP streambasiert, d.h. man muss sich das so vorstellen wie eine Röhre aus der immer wieder Kugeln (Bytes) herausfallen.
(es gibt noch eine 2. Röhre in Gegenrichtung)
Wieviele Kugeln direkt nacheinander rausfallen lässt sich nicht vorhersehen, denn das hängt von vielen Faktoren des Netzwerks und des IP-Stacks ab.
Daher ist es unbedingt notwendig einzelne Nachrichten mit irgendeinem Verfahren zu trennen.
Gebräuchlich sind Verfahren die einzelne Nachrichten durch ein eindeutiges Zeichen (meist Carriage Return) trennen oder vor jeder Nachricht die Anzahl der folgenden Bytes übermitteln.

Ob man Nachrichten als Strings versendet oder eine TStream-Klasse einsetzt ist nicht so wichtig.
Wichtig ist dass man ein gutes Protokoll definiert und dass der Empfänger damit umgehen kann nur Bruchstücke einer Nachricht zu empfangen und daraus die ursprünglichen Nachrichten wieder herstellen kann.
fork me on Github
  Mit Zitat antworten Zitat