解决QT连续发送数据的问题

在QT的学习网络的学习中,最大的问题是服务器与客户端收发数据的问题,当一方连续发送几次数据给另一方时,容易出现好几种错误:

1、收到的数据不全,只有第一个

2、收不到

3、收到的数据不对

readyRead在信号到达时,开始接收,我即使调用几次write,也不能解决这个问题。

我尝试了几个方法(发送的是结构体)

1、加延时,在write的时候,结果失败;

2、加入某博主说的,write后加waitFotBytesWritten,结果,在我发送十次数据的时候,得到的数据是跳动的,不连续的。

3、在每次发送前,加入一个头,指示有多少数据,读取的时候,readAll,会把所有的数据读到array,读取的数据的类型为QByte

Array,是二进制,这时候需要把array分解出来,char* buff = array.data();  buff指向array的第一个字节,int num;然后memcpy(&num,buff,sizeof(int));把头分解出来,buff+=sizeof(int),buff此时指向第一个发送的数据,这样就可以解决了。

隐患:目前只针对小数据,大数据还没有测试,因为不确定readyRead一次能读取多大的数据。

自己研究的,如有不对,请告之,谢谢

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值