标题:readyRead信号的发射问题
作者:wjfree
日期:2006-09-13 13:23
内容:
在socket通讯时 在什么情况下会发送readyRead()信号?
数据发完了,缓冲区没满,会发吗?
缓冲区满了,数据没有发完呢?
#1 [steven820218 09-13 14:25]
请理解readyRead()在QIODevice中的使用。
一般有新的网络数据到达,或有一个数据块写入。一般数据块大小不会超过缓冲区!
#2 [wjfree 09-13 17:07]
还是不太理解,楼上可以说得详细一些吗?
#3 [coordinates 09-14 09:53]
void QSocket::readyRead ()
当有进入的数据可以被读取时,这个信号被发射。
每一次有新进入的数据时,这个信号都被发射一次。记住新进入的数据只被报告一次,也就是,如果你没有读取全部数据,这个信号不会被再次发射,除非新的数据到达这个套接字。
#4 [wjfree 09-16 12:27]
还有些地方不太清楚,像用tcp协议发送4k的数据,tcp协议本身会将这3k的数据分开发送一个包大约是1460byte,那我接受方是只产生一个一个信号吗?
#5 [jacklee 09-17 18:15]
好像没必要讨论这个,反正每次处理这个signal时都读一下又多少个字节可以读了,如果未满足你要的数据长度,就直接退出,等待下一次signal