我在用TTCPBlockSocket http://synapse.ararat.cz/doc/help/blcksock.TTCPBlockSocket.html对于 TCP/IP 应用程序。问题是我无法确定连接何时丢失。
GetLastError
返回 0
Read
返回 0
但即使应用程序已连接,我也会遇到这些值,因此我可以获取当 TCP/IP 连接丢失时如何通知我。
Thanks
我想说,你可以使用CanRead http://synapse.ararat.cz/doc/help/blcksock.TBlockSocket.html#CanRead方法,将 0 传递给它Timeout
范围。该函数内部执行select http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141%28v=vs.85%29.aspx函数用于套接字并在发生错误时返回 False。仅使用此方法就足够了,因为select http://msdn.microsoft.com/en-us/library/windows/desktop/ms740141%28v=vs.85%29.aspx函数返回SOCKET_ERROR
如果您失去连接,并导致CanRead http://synapse.ararat.cz/doc/help/blcksock.TBlockSocket.html#CanRead方法返回 False 作为结果。所以我认为,这样检查套接字连接是否有效就足够了:
function IsSocketAlive(ASocket: TTCPBlockSocket): Boolean;
begin
Result := ASocket.CanRead(0);
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)