• 2888阅读
  • 7回复

[提问]qtsocket的问题 [复制链接]

上一主题 下一主题
离线boylafong
 

只看楼主 倒序阅读 楼主  发表于: 2017-09-09
客户端发送了一组数据,超过了8192个字节

服务器接收最大值为10000个字节

可是接收信号槽没有一次接收完,第一次接收的长度为8192个字节,我在信号槽里面用 while 一直read接收都是0个字节,如果不用while来read,那么第二次信号槽触发会接收完剩余的数据

我知道可以用报文头报文尾来处理,可是我想一次在信号槽里面接收完,可以实现吗?
离线never_forget

只看该作者 1楼 发表于: 2017-09-11
为什么用 while 接收,不是有信号嘛,何故?
离线lgao622

只看该作者 2楼 发表于: 2017-09-11
回 never_forget 的帖子
never_forget:为什么用 while 接收,不是有信号嘛,何故? (2017-09-11 09:07) 

试试将客户端的发送缓存和服务端的接收缓存设置成10000字节。
为了胜利者的安宁,需要战败者的死亡。
Qt技术交流:QQ2499971906
离线stlcours

只看该作者 3楼 发表于: 2017-09-11
回 lgao622 的帖子
lgao622:试试将客户端的发送缓存和服务端的接收缓存设置成10000字节。 (2017-09-11 17:14) 

怎么设?
离线dosmlp

只看该作者 4楼 发表于: 2017-09-11
while循环可能会阻塞Qt事件系统,导致不能处理网络事件,于是就收不到更多数据了
离线xllwanlxy

只看该作者 5楼 发表于: 2017-09-11
应该不是你想一次收完就收完的吧??

如果你非要使用while的话,在while中睡眠一会,大致是:
while(没接收完毕)
{
    if (可读数据长度大于0)
          读;
    
    msleep(10);
}
离线weiweiqiao

只看该作者 6楼 发表于: 2017-09-20
回 never_forget 的帖子
never_forget:
为什么用 while 接收,不是有信号嘛,何故?

难道读取客户端的数据不会用到while么?我看Qt给的例子中readyRead信号触发的槽函数中也是要用while来读取完整数据的。
Jobs Insanely Great.
离线yuyu414

只看该作者 7楼 发表于: 2017-09-21
一直while没有进入事件循环,当然接收不到,先缓存,然后下次数据来了再拼起来
快速回复
限100 字节
 
上一个 下一个