windows环境下QT UDP丢包率高的问题

looby- 2018-10-18 08:45:52
将MFC中的一个与FPGA进行UDP通讯的工程移植到QT中(用QT VS TOOL在VS15中编译),发现丢包率提高了近百倍。
并且在QT版本运行时,wireShark抓的包分析log后发现确实就有的包没收到,而在MFC版本中却毫无问题,求教是什么原因呢?

PS:
UDP通讯是用socket bind recvfrom这一套写的,移植到QT就是原样把代码拷贝过去。
并且UDP监听是用beginThreadEx单独开了线程,只监听记录、并不处理,所以丢包不是由于数据处理时间过长导致的。
...全文
1698 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
一听就像rtp打包播放
looby- 2018-11-07
  • 打赏
  • 举报
回复
已解决,发现是QMediaPlayer的问题
TJbell 2018-10-22
  • 打赏
  • 举报
回复
可以尝试下增大接收缓冲区试试看,
Little柯南 2018-10-22
  • 打赏
  • 举报
回复
个人建议表现方式两种方案:
1、使用QUdpsocket,基于原生Qt的接口来写或者重构,Qt对Windows系统里面做了封装,更简单可靠(Qt的UDP通信从Qt4到Qt5基本没变过,但Qt一直更新,故而稳定性可以接受),发出去(write)后建议使用flush()函数刷新缓存;
2、使用windows sdk,除了界面或者主循环使用Qt之外,其他一切都原生按照windows系统的来,并且注意先将数据写进自己构建的数据结构,一定量后在write出去。原理:适当减少IO操作,是提高效率的一种方式。每1字节发一次,与每个一字节存成1kb,再一次发出去,是有效率区别的;

16,215

社区成员

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

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