查看完整版本: [-- tcp服务器接收4万个8位数据,接收数据的数量不对。 --]

QTCN开发网 -> 其它技术开发讨论区 -> tcp服务器接收4万个8位数据,接收数据的数量不对。 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

shire 2017-01-24 19:16

tcp服务器接收4万个8位数据,接收数据的数量不对。

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

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

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

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

firebolt 2017-01-25 19:48
shire:多谢您的回答,循环读取tcp的缓冲区不知道在Qt中怎么实现,刚上手学习Qt,我在百度,大神有这方面的资料吗?多谢 (2017-01-25 12:38) 

如果吞吐量大建议你看看asio。


查看完整版本: [-- tcp服务器接收4万个8位数据,接收数据的数量不对。 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled