Entwickler-Ecke

Internet / Netzwerk - Socket - Datenverlust


Akni - Di 22.10.02 10:21
Titel: Socket - Datenverlust
Hi Leute,

ich habe folgendes Problem: ich schicke Daten mit SendBuf über eine Socket-Verbindung. Die Verbindung funktioniert, aber manchmal gibt ReceiveBuf -1 zurück und die Daten verloren gehen. Beim nächsten Receive kriege ich Daten ganz normal wieder.
Wie kann ich diesen Datenverlust vermeiden?

Vielen Dank im voraus,
Akni


O'rallY - Di 22.10.02 14:11

Könntest du n bissl Code posten?


noeppel - Do 24.10.02 09:36

Wenn ReceiveBuf -1 zurückgibt, dann heißt dass das keine Daten gelesen wurden. Wenn aber SendBuf -1 zurückgibt, dann heißt dass das keine Daten gesendet werden konnten, weil der interne Buffer des Winsock-Systems voll ist(was hier höchstwahrscheinlich der Fall ist). Versuch doch mal jede SendBuf-Anweisung durch folgende zu ersetzen:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
.
.
.
while SendBuf = -1 do
  Application.ProcessMessages;
.
.
.


-> Diese Variante ist sehr aggressiv und versucht sehr häufig hintereinander die Daten in dem Buffer zu platzieren. Aus diesem Grund wäre es ratsam (vor allem bei langsamen Verbindungen) das Programm noch zusätzlich warten zu lassen.

mfg noeppel