当前位置: 首页 > news >正文

Qt 拔网线等情况下收不到disconnected()信号

Qt的network模块在拔网线、突然关机等非正常断开的情况下是不会触发disconnected信号的,因为Qt没有设置TCP keepalive,所以在非正常断开的情况下,没办法确认网络是否断开。

  1. 通过C/C++接口设置enableKeepalive。在触发connected()信息后,或者state() == QAbstractSocket::ConnectedState时,设置enableKeepalive。参数可以通过QAbstractSocket::socketDescriptor()获取,参数传的就是Socket id
int enableKeepalive(int fd) {const int keepalive = 1;            //开启keepalive属性const int keepidle = 3;             //如果连接在3秒内没有任何数据来往则进行探测const int keepinterval = 1;         //探测时发包的时间间隔为1秒const int keepcount = 3;            //尝试探测的次数if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (char *)(&keepalive), sizeof(keepalive)) < 0) return -1;if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, (char *)(&keepidle), sizeof(keepidle)) < 0) return -1;if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, (char *)(&keepinterval), sizeof(keepinterval)) < 0) return -1;if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, (char *)(&keepcount), sizeof(keepcount)) < 0) return -1;return 0;
}

2.通过QAbstractSocket::setSocketOption设置QAbstractSocket::KeepAliveOption属性。

http://www.lryc.cn/news/599101.html

相关文章:

  • 安卓上的迷之K_1171477665
  • Android悬浮窗导致其它应用黑屏问题解决办法
  • 【HarmonyOS】鸿蒙应用开发中常用的三方库介绍和使用示例
  • SpringBoot与ApacheSpark、MyBatis实战整合
  • [python][flask]flask静态资源
  • Spring Boot License 认证系统
  • 从零开始的云计算生活——番外6,使用zabbix对中间件监控
  • [SAP ABAP] 请求释放及传输
  • 二开---01
  • 基于多种主题分析、关键词提取算法的设计与实现【TF-IDF算法、LDA、NMF分解、BERT主题模型】
  • 【vue vapor jsx 未雨绸缪】
  • 篇五 网络通信硬件之PHY,MAC, RJ45
  • 统一调度与编排:构建自动化数据驱动平台
  • 【Java、C、C++、Python】飞机订票系统---文件版本
  • Fluent自动化仿真(TUI命令脚本教程)
  • RCE真实漏洞初体验
  • 制造业低代码平台实战评测:简道云、钉钉宜搭、华为云Astro、金蝶云·苍穹、斑斑低代码,谁更值得选?
  • NBIOT模块 BC28通过MQTT协议连接到EMQX
  • 栈与队列:数据结构核心解密
  • 《Uniapp-Vue 3-TS 实战开发》自定义环形进度条组件
  • 数据结构 二叉树(1)
  • 《Uniapp-Vue 3-TS 实战开发》自定义年月日时分秒picker组件
  • uniapp创建vue3+ts+pinia+sass项目
  • Linux 桌面市场份额突破 5%:开源生态的里程碑与未来启示
  • 【数据结构与算法】数据结构初阶:详解二叉树(六)——二叉树应用:二叉树选择题
  • 数据结构3-单双链表的泛型实现及ArrayList与LinkedList的区别
  • SpringBoot(黑马)
  • 【Unity笔记】OpenXR 之VR串流开发笔记:通过RenderTexture实现仅在PC端展示UI,在VR眼镜端隐藏UI
  • Java数组详解
  • S7-1500 与 ET200MP 的组态控制通信(Configuration Control)功能实现详解(下)