是否可以增加QTcpSocket
的接收缓冲区大小?
有两种方法可以控制Qt的套接字接收缓冲区的大小:
void QAbstractSocket::setReadBufferSize()
将 QAbstractSocket的内部读取缓冲区的大小设置为size 字节...
和
void QAbstractSocket::setSocketOption()
使用QAbstractSocket::ReceiveBufferSizeSocketOption
参数:
在操作系统级别设置套接字接收缓冲区大小(以字节为单位)。这个 映射到 SO_RCVBUF 套接字选项。此选项不会影响 QIODevice或QAbstractSocket缓冲区(请参见setReadBufferSize())。这个 枚举值已在Qt 5.3中引入。
void readBuffer
的默认值为0,它与无限Qt自己的内部缓冲区匹配:
缓冲区大小为0表示读取缓冲区不受限制,并且所有 传入数据被缓冲。这是默认设置。
因此,我尝试通过setSocketOption
更改操作系统级别的接收缓冲区大小:
my_Soc->setSocketOption(QAbstractSocket::ReceiveBufferSizeSocketOption, 64 * 1024 * 1024);
之后,我检查值:
int increasedSize = my_Soc->socketOption(
QAbstractSocket::ReceiveBufferSizeSocketOption).toInt();
increasedSize
与我设置的值64 * 1024 * 1024
相匹配。但是实际上,接收缓冲区的大小保持等于默认值== 8 KB。
是否可以增加缓冲区大小,而我在做什么错呢?