Grundsätzlich werden Daten, die man über das Netzwerk verschickt in einzelne Pakete zerlegt.
TCP bzw. WinSock sorgt dafür, dass die Pakete vollständig und in richtiger Reihenfolge eintreffen.
Du selbst bist aber für das Zusammenhängen der Pakete verantwortlich.
Also muss dann im ReceiveEvent ungefähr folgende Zeile stehen:
Delphi-Quellcode:
xmldata := xmldata + indySocket.ReceiveString;
// die Funktion ReceiveString hat möglicherweise einen anderen Namen
// ich hab mir nicht die Mühe gemacht die genaue Syntax herauszusuchen
Jetzt hast du vielleicht noch das Problem, dass du das Ende der Übertragung feststellen musst,
damit du dann auf die Daten reagieren kannst.
Entweder du schliest die
TCP-Verbindung oder du übermittelst vorher die Anzahl der Nutzdaten.
Vergleiche das mit HTTP:
Code:
HTTP/1.1 200 OK
Server: Apache/1.3.29 (Unix) PHP/4.3.4
Content-Length: (Größe von info.xml in Byte)
Content-Language: de (nach ISO 639 und ISO 3166)
Content-Type: text/
xml
<
HTML> ....hier die Nutzdaten .....
In
Content-Length wird die Länge der Nutzdaten übermittelt, damit der Browser weiss, wie viel er lesen muss.