Was nicht passt, wird passend gemacht: um eine Datenstruktur über Sockets (Streams) zu senden und zu empfangen, wird sie in ihre Teile zerlegt und jeweils aus diesen Teilen wieder zusammengesetzt. Wenn Sender und Empfänger den Strukturaufbau genau kennen, braucht der Empfänger nur die eintreffenden Daten in der richtigen Reihenfolge einzulesen.
Sehr einfach geht das mit den Read- und Write Funktionen aus
Indy, die im IdTCPClient.IOHandler zur Verfügung stehen. Dinge mit flexibler Länge wie Strings oder Byte Arrays senden dabei zuerst die Länge und dann den Inhalt. So weiss der IOHandler des Empfängers, wie viele Bytes er lesen muss.
Diese Zerlegung auf primitive Objekte, die einzeln übertragen werden, ist sehr low-level und oft ausreichend. Für flexiblere Strukturen sind
XML oder JSON als Zwischenformat geeigneter, da Sender und Empfänger alles als einen einzigen String senden und empfangen. Lediglich ein
XML oder JSON Parser wird dazu noch benötigt.