解决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一次能读取多大的数据。

扫描二维码关注公众号,回复: 2438969 查看本文章

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

猜你喜欢

转载自blog.csdn.net/cxycj123/article/details/81120903