@Dejan Vu
Es ist etwas lange her dass ich Netzwerk Programmierung betrieben habe, aber meine Erinnerung hat mich nicht getäuscht.. Siehe
msdn recv()
Zitat:
Return value
If no error occurs, recv returns the number of bytes received and the buffer pointed to by the buf parameter will contain this data received. If the connection has been gracefully closed, the return value is zero.
Man muss keine Heartbeat Pakete unter
TCP schicken. Die Programlogik funktioniert einfach normal weiter, bis bei einem rcv() ein Disconnect erkannt wird. Siehe Codesnippet aus meiner alten Library
Delphi-Quellcode:
//...
Result := recv(FSocket, Buffer, BufferSize, 0);
case Result of
0: Disconnect;
SOCKET_ERROR:
begin
Result := WSAGetLastError();
if Result = WSAEWOULDBLOCK then
Result := 0
else
Disconnect;
end;
end;
//...
Disconnect macht ein closesocket und setzt Disconnected boolean auf true..