咨询qt qtcpsocket 监听 中断 问题

abc2005211 2017-04-18 07:21:25
各位好。小弟有一个问题,就是使用qtcpsocket 用于接收服务器推送数据,option 已经设置 keep_alive 。
其中数据传输的时候,如果是网络确实中断了,会发出disconnect signal,可以进行重新连接。

网络好的时候,可以一直接收数据。
但是 当网络不好的时候, 接收不到数据,也不产生disconnect信号,查询socketstate 还是 connected state。

感觉处于假死模式,各位有什么好的方法吗?

谢谢!
...全文
465 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
设置一个时间间隔,每隔多少秒发送一个心跳包,如果连续3次或者多少次没有收到心跳包回复,则当作是链路断开,手动断开连接,重连服务器。
astro_lee 2017-04-19
  • 打赏
  • 举报
回复
引用 1 楼 styyzxjq2009 的回复:
发心跳包,一秒一次收发,收不到心跳包就说明网络不通,收到心跳但是收不到服务器的数据,那就是服务器数据的收发有问题了
1秒一次太频繁了,可以根据需要按照一定间隔循环向服务器发送心跳包,如果心跳失败,可以尝试重连服务器。
风之水2003 2017-04-19
  • 打赏
  • 举报
回复
发心跳包,一秒一次收发,收不到心跳包就说明网络不通,收到心跳但是收不到服务器的数据,那就是服务器数据的收发有问题了

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧