qt TCP接收数据遇到的问题
来源:互联网 发布:八种调度算法 编辑:程序博客网 时间:2024/06/07 05:58
项目负责利用TCP来传输一组大的数据,然后在接收函数里将接收的数组进行解包赋值。
从结果来看发现解包出来的数据都是错误的,几乎都是随机并且好几个值是负无穷。
这里就发现了QT的TCP传输机制,它将我的数据分两次接收,每一次是原来的一半。
例如我传3000字节大小,那么它会拆成两次1500,偶尔会出现2966和44或者一次满包的情况。
随着你传输数据越大,能一次性满包的概率越小。
我在项目里用的是readAll函数,并没有找到QT函数中能阻塞式接收指定数据大小的函数。
当然了数据过大会分包,数据过小的频繁传输会粘包。
又或者因为两次传输的时间分隔比较小,所以导致redyread只触发一次的问题都有可能遇到。
关于上述分包的解决办法是因为我知道数据包一次传输的大小。
所以再readAll后立即判断buff. size()的大小是否大于一次传输的大小 即>=3000
不是的话吧buff赋值给全局变量 第二次出发radyread信号 再通过append来拼接两个或者三个包。
阅读全文
0 0
- qt TCP接收数据遇到的问题
- Qt中tcp传输文件遇到的问题
- QT下udpsocket一段时间接收不到数据的问题
- Qt中realAll() 接收数据不完整的问题
- Qt TCP通信readAll()读取接收数据时无法读完大数据量的解决法案
- Qt串口接收数据长度不稳定问题
- 【Qt】遇到的问题
- QT 遇到的问题
- Qt遇到的问题
- linux 内核tcp接收数据的实现
- TCP的数据发送和接收
- linux 内核tcp接收数据的实现
- TCP的数据发送和接收
- tcp-ip : tcp接收数据
- android tv接收流遇到的问题
- springmvc 接收list参数遇到的问题
- TCP UDP多机通信无法接收到数据的问题
- QT多线程TCP文件接收
- 「网络流 24 题」试题库
- C#设置label(标签)控件的背景颜色为透明
- 2017年3月4月无人机航空摄影总结
- 1.hadoop安装-伪分布模式
- sql server 2005 32位+64位、企业版+标准版、CD+DVD 下载地址大全
- qt TCP接收数据遇到的问题
- bzoj 1596(树形dp)
- 【Leetcode-easy-448】Find All Numbers Disappeared in an Array
- WebView加载百度网页
- 栈的基本操作和应用
- Google、亚马逊、微软和 IBM 如何把 AI 服务卖出去?
- 熊猫学猿--第二竹搭建PHP环境
- Oracel alert table 笔记
- Tomcat在Linux上的安装与配置