Einzelnen Beitrag anzeigen

override

Registriert seit: 16. Dez 2006
10 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Sockets Problem: Programm hängt sich auf???

  Alt 28. Apr 2007, 14:02
Ich hatte vor kurzem das gleiche Problem.
Wenn der Client nicht mehr verbunden ist,
"merkt" der ServerSocket dass nicht immer.

Wenn der Client disconnected,
wird WaitForData() verlassen, obwohl keine Daten
empfangen wurden. Daher einfach einen Check
in der Schleife, ob Daten gesendet wurden
(if recv = 0) und schon ist das Problem gegessen.

Delphi-Quellcode:
  repeat
    if SockStream.WaitForData(INFINITE) then begin
      recv := SockStream.Read(len,SizeOf(len));
      if (recv = 0) then Exit; //Verlasse Thread, wenn disconnected
      //Ansonsten wie gewohnt weitermachen
      recv := SockStream.Read(NetBuf[0],len);
      if (recv = len) then GMNet.Parse(NetBuf);
    end;
  until Terminated or (ClientSocket.Connected = False);
MfG
  Mit Zitat antworten Zitat