Qt网络编程 服务器异常断开,不能检查到网络状态变化

在嵌入式平台下,使用Qt设计网络编程,连接上服务器以后,QTCPsocket->state()==QAbstractSocket::ConnectedState。到此正确... 在嵌入式平台下,使用Qt设计网络编程,连接上服务器以后,QTCPsocket->state()==QAbstractSocket::ConnectedState。到此正确。但是,在非正常的情况下断开服务器,例如,拔掉服务器的网线、服务器断电等等这些非正常动作以后,QTCPsocket的状态还是ConnectedState!而且QTCPsocket->wirte()也返回正确的字节数。现在求大神帮忙解决QTCPsocket状态异常的问题。。。怎么检查QTCPsocket与服务器已经断开 这个状态??? 展开
 我来答
匿名用户
2013-08-09
展开全部

自己做心跳保活。因为异常断开不属于qt的处理范围,而tcp协议栈又不存在自动处理异常断线的功能,tcp连接在不正常关闭情况下通常都会被协议栈保持存活一段时间(具体和操作系统协议栈实现和设置有关)。qt无法获得tcp协议栈的状态消息,也就不会做出任何反应。所谓心跳机制请参照以下网址内容:

http://baike.baidu.com/view/4372209.htm
追问
除了做心跳包,不知道还有没有其他方法?急急急。谢过了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式