我的应用程序有一个TClientsocket正确地连接到服务器,但当服务器关闭并再次运行时,我的应用程序不知道如何连接它
我用这段代码来解决问题
if not ClientSocke.active then
begin
clintsocke.open();
end
else
Exit();但是这段代码不能解决我的问题,active属性总是为false,我该如何解决这个问题呢?
发布于 2014-05-26 01:32:00
检查Active=false将会工作得很好。但是您还应该处理OnDisconnect和OnError事件。特别是在OnError中,您可以Close()套接字。
此外,如果可能,您应该在通信协议中实现ping/keepalives,以便可以检测服务器何时停止响应命令。如果发送命令时出现套接字错误,请关闭套接字。如果您发送了一个命令,但没有及时得到响应,请关闭套接字。
如果这是不可能的,那么您至少应该通过setsockopt()启用TCP keepalives,这样操作系统就可以在停止响应的套接字上报告错误。
https://stackoverflow.com/questions/23853971
复制相似问题