Увеличьте размер буфера приема для QTcpSocket - PullRequest
0 голосов
/ 26 декабря 2018

Можно ли увеличить QTcpSocket размер буфера приема?

Существует два метода управления размером буфера приема сокета Qt:

void QAbstractSocket::setReadBufferSize()

Устанавливает размер внутреннего буфера чтения QAbstractSocket в байтах размера ...

и

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 килобайт.

Можно ли увеличить размер буфера, и что я делаю неправильно?

...