Für den Server ist erst einmal alles, was aus dem Socket kommt, ein "Stream". Wenn der von iOS gesendete DataStream aber so wie der von Windows mit einem eindeutigen ZeilenEnde-Terminator endet, kann man auf der Serverseite mit
Indy genau bis zu diesem Terminator lesen, z.B. Linefeed. Damit wäre der Windows-Terminator (CR/LF) ebenfalls abgedeckt, man müsste denn nur noch das CR abschneiden.
Der IOHandler hat dazu eine Readn-Methode mit einem frei definierbaren Terminator.
Und wenn in dem Stream CR/LF Bytes vorkommen?
Das halte ich für keine gute Idee.
Wenn CR/LF in den Daten vorkommen können, hat man in beiden Fällen ein Problem, das Ende zu erkennen:
TCPClient.IOHandler.WriteLn(
StringDerCRLFEnthält, IndyTextEncoding_UTF8);
kann der Server nicht erkennen, nach welchem CRLF Schluss ist. Das könnte so auch jetzt schon nicht funktionieren.
Es gibt keine Möglichkeit, den "Typ" abzufragen, der im Socket ankommt. Man kommt nur mit Kenntniss des Protokolls weiter.
Wenn die Daten z.B. eine konstante Länge haben, ist es einfach.
Es wäre gut zu sehen, wie bisher die Daten von iOS serverseitig eingelesen wurden.