我的应用程序有一个TClientsocket正确连接到服务器 但是当服务器关闭并再次运行时 我的应用程序不知道连接到它
我使用此代码来解决问题
if not ClientSocke.active then
begin
clintsocke.open();
end
else
Exit();
但是此代码无法解决我的问题,并且活动属性始终为false 我该如何解决这个问题
答案 0 :(得分:0)
检查Active=false
会正常工作。但您也应该处理OnDisconnect
和OnError
事件。特别是OnError
,您可以Close()
套接字。
此外,如果可能,您应该在通信协议中实现ping / keepalive,这样您就可以检测服务器何时停止响应命令。如果发送命令并收到套接字错误,请关闭套接字。如果发送命令但未及时收到响应,请关闭套接字。
如果无法做到这一点,那么您至少应该通过setsockopt()
启用TCP keepalive,这样操作系统就可以报告停止响应的套接字上的错误。