• 3394阅读
  • 3回复

[提问]tcp服务器接收4万个8位数据,接收数据的数量不对。 [复制链接]

上一主题 下一主题
离线shire
 

只看楼主 倒序阅读 楼主  发表于: 2017-01-24
刚学Qt,希望大家多多指教!我客户端给服务器发送数据,用电脑上网络调试器作为服务器检查客户端发送的数据和数据的数量都没有问题,然后用开发板做服务端检测端口是否连接,连接后用QBytearray qdb=this->readWriteSocket->readAll();存放接收的数据,用Qstring globalString=qdb.toHex().data();int  num=globalString.length();得到数据的lengte,不知道是为什么长度最开始是1000,然后隔一会就增加2920,增加到40000要十分钟,然后之后这个length还一直增加,为什么发送过来的数据长度一直在增加?用电脑上的网络调试器测试客户端,客户端发送过来的没问题,问题还是在服务器上的代码,希望大神指点一二!
离线firebolt

只看该作者 1楼 发表于: 2017-01-24
tcp本身是面向连接的流协议,为了保证数据可靠它有拥塞控制和重传机制,接收端有数据到达需要尽快接收完缓冲区的数据,所以当你收到有数据到达的消息后,应该循环读取缓冲区,直到缓冲区为空。
离线shire

只看该作者 2楼 发表于: 2017-01-25
回 firebolt 的帖子
firebolt:tcp本身是面向连接的流协议,为了保证数据可靠它有拥塞控制和重传机制,接收端有数据到达需要尽快接收完缓冲区的数据,所以当你收到有数据到达的消息后,应该循环读取缓冲区,直到缓冲区为空。 (2017-01-24 21:07) 

多谢您的回答,循环读取tcp的缓冲区不知道在Qt中怎么实现,刚上手学习Qt,我在百度,大神有这方面的资料吗?多谢
离线firebolt

只看该作者 3楼 发表于: 2017-01-25
回 shire 的帖子
shire:多谢您的回答,循环读取tcp的缓冲区不知道在Qt中怎么实现,刚上手学习Qt,我在百度,大神有这方面的资料吗?多谢 (2017-01-25 12:38) 

如果吞吐量大建议你看看asio。
快速回复
限100 字节
 
上一个 下一个