首页| 论坛| 消息

标题:qtsocket的问题
作者:boylafong
日期:2017-09-09 21:11
内容:

客户端发送了一组数据,超过了8192个字节
服务器接收最大值为10000个字节
可是接收信号槽没有一次接收完,第一次接收的长度为8192个字节,我在信号槽里面用 while 一直read接收都是0个字节,如果不用while来read,那么第二次信号槽触发会接收完剩余的数据
我知道可以用报文头报文尾来处理,可是我想一次在信号槽里面接收完,可以实现吗?


#1 [never_forget 09-11 09:07]
为什么用 while 接收,不是有信号嘛,何故?
#2 回 never_forget 的帖子 [lgao622 09-11 17:14]
never_forget:为什么用 while 接收,不是有信号嘛,何故? (2017-09-11 09:07) 
试试将客户端的发送缓存和服务端的接收缓存设置成10000字节。
#3 回 lgao622 的帖子 [stlcours 09-11 17:55]
lgao622:试试将客户端的发送缓存和服务端的接收缓存设置成10000字节。 (2017-09-11 17:14) 
怎么设?
#4 [dosmlp 09-11 19:49]
while循环可能会阻塞Qt事件系统,导致不能处理网络事件,于是就收不到更多数据了
#5 [xllwanlxy 09-11 22:03]
应该不是你想一次收完就收完的吧??
如果你非要使用while的话,在while中睡眠一会,大致是:
while(没接收完毕)
{
if (可读数据长度大于0)
读;
msleep(10);
}

<< 1 2 >> (1/2)

回复 发表
主题 版块