Entwickler-Ecke

Internet / Netzwerk - Socket.ReceiveText ist nicht vollständig


T.E. - Mo 18.02.13 12:53
Titel: Socket.ReceiveText ist nicht vollständig
Moin moin,

ich habe ein kleines Problem mit der TClientSocket.
Und zwar möchte ich die Antwort mit Socket.ReceiveText verarbeiten.

Dabei ist mir aufgefallen, das die Länge dessen, was bei Socket.ReceiveLength herauskommt inbesondere bei längeren Antworten (ca. 8193-21000 Zeichen) von der in der Antwort mit gelieferten Länge abweicht.
Beispiel: die Antwort sollte 20796 Zeichen enthalten, angekommen sind bei mir aber nur die ersten 8192 Zeichen.
Da ich mir diese Diskrepanz nicht erklären kann hoffe ich, das mir einer von Euch dabei vielleicht mal auf die Sprünge helfen kann.

Denn soweit ich weiß sollte AnsiString ja keine wirkliche Begrenzung haben, oder???

Naja der Code mit dem ich empfange sieht (ganz unspektakulär) wie folgt aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
var
  CCAnswer: AnsiString;
begin
  CCAnswer := Socket.ReceiveText;
end;


Besten Dank im voraus.


Jann1k - Mo 18.02.13 13:09

Das Problem ist, dass nicht alle gesendeten Daten gleichzeitig empfangen bzw. ausgelesen werden können (kann schon bei kleinen Datenmengen passieren, bei großen wirds leicht auffällig). Was du brauchst ist eine Warteschleife, mit der du kontrollieren kannst, ob alle Daten da sind.

Nützlich dazu sind die Tutorials von user profile iconNarses:
http://www.entwickler-ecke.de/topic_65487.html?view=dl


Mr_Emre_D - Mo 18.02.13 13:10

hier [http://www.delphipraxis.net/1137645-post11.html]


T.E. - Mo 18.02.13 14:02

Ah... okay ich werd mir beide Links mal durchschauen in der Hoffnung, das sich das Problem anschließend als gelöst darstellt.

Besten Dank schon einmal.