Delphi + Synapse:如何检查我是否仍然连接

opc*_*0de 7 delphi apache-synapse

TTCPBlockSocket用于TCP/IP应用程序.问题是我无法确定何时连接丢失.

GetLastError返回0
Read返回0

但是,如果应用程序已连接,我会遇到这些值eaven所以我可以得到它如何在TCP/IP连接丢失时得到通知.

谢谢

TLa*_*ama 1

我想说,你可以使用该CanRead方法,将 0 传递给它的Timeout参数。select该函数在内部为套接字执行函数,并在发生错误时返回 False。仅使用此方法就足够了,因为如果失去连接,该select函数就会返回,并导致该方法返回 False。所以我认为,这样检查套接字连接是否有效就足够了:SOCKET_ERRORCanRead

function IsSocketAlive(ASocket: TTCPBlockSocket): Boolean;
begin
  Result := ASocket.CanRead(0);
end;
Run Code Online (Sandbox Code Playgroud)