... 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.