使用QTcpSocket时是否需要缓冲区

Is a buffer necessary when using QTcpSocket?

本文关键字:缓冲区 是否 QTcpSocket 使用      更新时间:2023-10-16

我很好奇是否有必要创建自己的缓冲区,然后在每个readyRead()信号上从QTcpSocket读取数据。我通常认为这是个好主意,但我在一些不同的网站上看到过(甚至可能是Qt网站,我不记得了),使用缓冲区是完全没有必要的,如果完整的数据包还没有准备好,最好返回,然后等待下一个readyRead()信号。QTcpSocket负责增加其内部缓冲区还是有一个最大值?我知道这也可能取决于数据包的大小,所以假设最大值约为150kb。

QTcpSocket管理一个内部未绑定缓冲区(请参阅QAbstractSocket::setReadBufferSize)。因此,从技术上讲,没有必要保留自己的单独缓冲区。