Я написал следующий код после принятия сокета от клиента и увеличил размер буфера отправки. Однако, когда я пытаюсь проверить размер буфера с помощью 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));
Но это не влияет.