Я не могу изменить размер буфера отправки на сокетах, используя SO_SNDBUF.Этот параметр игнорируется, когда включен контроль перегруженности и автонастройка? - PullRequest
0 голосов
/ 10 сентября 2018

Я написал следующий код после принятия сокета от клиента и увеличил размер буфера отправки. Однако, когда я пытаюсь проверить размер буфера с помощью lsof, это дает мне 52.

// Set buffer size
int sendbuff = 98304;

printf("sets the send buffer to %d\n", sendbuff);
int res = setsockopt(newSocket, SOL_SOCKET, SO_SNDBUF, &sendbuff, sizeof(sendbuff));


// check buffer size
sudo lsof -T qs | grep 6697  => TCP localhost:7891->localhost:44718 (ESTABLISHED QR=0 ***QS=52***)

Я нашел похожую статью для размеров буфера приема. Размер буфера сокета не увеличивается . Но не могу сказать, есть ли параметр, чтобы отключить автоматическую настройку размера sndbuf. * ​​1006 *

Я попытался отключить автонастройку для приемных буферов, используя:

echo 0 | sudo tee /proc/sys/net/ipv4/tcp_moderate_rcvbuf

А затем изменил размер буфера приема, используя:

res = setsockopt(newSocket, SOL_SOCKET, SO_RCVBUF, &sendbuff, sizeof(sendbuff));

Но это не влияет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...