• 7065阅读
  • 3回复

[提问]用QTcpSocket接收数据怎么收不全? [复制链接]

上一主题 下一主题
离线liulihuogyh
 

只看楼主 倒序阅读 楼主  发表于: 2013-09-26
关键词: QT4求助qtcpsocket
服务端发送几十万字节的数据,数据格式,是命名,长度,数据    ,接收端读出长度后,每次接收1024字节循环接收,但是循环几次就会出现读不全的情况,比如只读了1020字节,下一次就直接读0字节了,是什么问题是发送端没发全还是接收没收全???帮帮忙,急
离线liulihuogyh

只看该作者 1楼 发表于: 2013-09-26
已发现问题应该是没有读完数据,bytesAvailable只返回8188个字节,应该怎么收完?
离线shy_wing

只看该作者 2楼 发表于: 2013-10-09
我没有遇到过,如果是我碰到这个问题,我会尝试着把数据分成好几份发送
离线ppdayz

只看该作者 3楼 发表于: 2013-10-09
收发不要用裸数据,给包打上包头,然后标记上datalen,就可以了,如果用TCP发的话,协议会保证你的数据是肯定收的到的。所以只要是发送出去的,对端就一定可以收到(在连接状态下),而且tcp协议是保证顺序是对的,如果数据大的话,发送的时候tcp协议会自动把分包的,所以只要第一个包包含整个数据的长度,就可以很简单的收全数据。
快速回复
限100 字节
 
上一个 下一个