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

Qt的UDP接收过一段时间后就收不到数据,readyRead() 信号不触发的彻底解决方法

        在做一个Qt的UDP通信的软件时,发现UDP接收端运行一段时间后再也收不到数据,表现为readyRead() 信号对应的槽函数再也得不到执行,但是UDP的缓冲区是有数据的(bytesAvailable()函数返回值不为0)。

        查阅网上资料发现这可能是Qt的一个Bug,有种说法是如果在从缓冲区读数据时,如果socket再写数据,readyRead() 信号便不会再触发。

        最终彻底的解决方法是:手动发送readyRead() 信号。具体措施是:开一个如10ms的计数器,在定时器槽函数中通过调用bytesAvailable()查询UDP接收缓冲区是否有数据,若bytesAvailable()返回值不为0,则调用 emit m_socket.readyRead(),手动发射一个readyRead()信号,问题最后完美解决!

        我的Qt版本是4,用的编译器版本为MSVC2010,不知道后续的Qt版本有没有解决这个问题。

http://www.lqws.cn/news/553465.html

相关文章:

  • Python 数据分析:numpy,抽提,整数数组索引
  • 鸿蒙5:其他布局容器
  • 【大数据】HDFS分布式 机架感知
  • 学习笔记(C++篇)—— Day 8
  • Node.js特训专栏-实战进阶:10.MongoDB文档操作与聚合框架
  • 提示词优化神奇: PromptPilot是什么
  • NLog、log4net、Serilog 和 Microsoft.Extensions.Logging 四大 .NET 日志库的综合对比
  • 滑坡监测接收机市场分析
  • Uni-App 小程序面试题高频问答汇总
  • 电子电气架构 --- 车载芯片SOC简介
  • VR训练美国服务器:高性能解决方案与优化指南
  • 淘宝客APP的性能优化与监控体系:架构师的技术实践
  • 力扣第73题-矩阵置零
  • SQL关键字三分钟入门:RANK() —— 窗口函数
  • QT+VS2019 开发项目 扩展安装
  • C++标准的共享型智能指针std::shared_ptr使用介绍
  • 在项目中如何巧妙使用缓存
  • 前端进阶之路-从传统前端到VUE-JS(第一期-VUE-JS环境配置)(Node-JS环境配置)(Node-JS/npm换源)
  • Python 中 `while` 循环在游戏开发中的具体应用:实战案例解析
  • 软测八股--计算机网络
  • 告别固定密钥!在单一账户下用 Cognito 实现 AWS CLI 的 MFA 单点登录
  • C++包管理工具:conan2持续集成 (CI) 教程
  • 给自己网站增加一个免费的AI助手,纯HTML
  • 广外计算机网络期末复习
  • (LeetCode 每日一题) 2099. 找到和最大的长度为 K 的子序列 (排序)
  • VScode使用usb转网口远程开发rk3588
  • 展开说说:Android之ContentProvider源码浅析
  • 【安卓Sensor框架-1】SensorService 的启动流程
  • PMO 与IPD、CMMI、项目管理什么区别和联系
  • Yolo11模型训练速通