Qt网络编程 服务器异常断开,不能检查到网络状态变化
在嵌入式平台下,使用Qt设计网络编程,连接上服务器以后,QTCPsocket->state()==QAbstractSocket::ConnectedState。到此正确...
在嵌入式平台下,使用Qt设计网络编程,连接上服务器以后,QTCPsocket->state()==QAbstractSocket::ConnectedState。到此正确。但是,在非正常的情况下断开服务器,例如,拔掉服务器的网线、服务器断电等等这些非正常动作以后,QTCPsocket的状态还是ConnectedState!而且QTCPsocket->wirte()也返回正确的字节数。现在求大神帮忙解决QTCPsocket状态异常的问题。。。怎么检查QTCPsocket与服务器已经断开 这个状态???
展开
1个回答
2013-08-09
展开全部
自己做心跳保活。因为异常断开不属于qt的处理范围,而tcp协议栈又不存在自动处理异常断线的功能,tcp连接在不正常关闭情况下通常都会被协议栈保持存活一段时间(具体和操作系统协议栈实现和设置有关)。qt无法获得tcp协议栈的状态消息,也就不会做出任何反应。所谓心跳机制请参照以下网址内容:
http://baike.baidu.com/view/4372209.htm
追问
除了做心跳包,不知道还有没有其他方法?急急急。谢过了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询