首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定TClientSocket处于活动状态

如何确定TClientSocket处于活动状态
EN

Stack Overflow用户
提问于 2014-05-25 17:40:32
回答 1查看 856关注 0票数 0

我的应用程序有一个TClientsocket正确地连接到服务器,但当服务器关闭并再次运行时,我的应用程序不知道如何连接它

我用这段代码来解决问题

代码语言:javascript
复制
if not ClientSocke.active then
    begin
        clintsocke.open();
    end
else
    Exit();

但是这段代码不能解决我的问题,active属性总是为false,我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2014-05-26 01:32:00

检查Active=false将会工作得很好。但是您还应该处理OnDisconnectOnError事件。特别是在OnError中,您可以Close()套接字。

此外,如果可能,您应该在通信协议中实现ping/keepalives,以便可以检测服务器何时停止响应命令。如果发送命令时出现套接字错误,请关闭套接字。如果您发送了一个命令,但没有及时得到响应,请关闭套接字。

如果这是不可能的,那么您至少应该通过setsockopt()启用TCP keepalives,这样操作系统就可以在停止响应的套接字上报告错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23853971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档