Autor Beitrag
Akni
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 22.10.02 10:21 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Di 22.10.02 14:11 
Könntest du n bissl Code posten?

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
noeppel
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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:

ausblenden 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