我无法使用SO_SNDBUF更改套接字上的发送缓冲区大小。打开拥塞控制和自动调整功能时是否忽略此参数?

时间:2018-09-10 18:03:31

标签: linux sockets tcp

我从客户端接受套接字并增加了发送缓冲区的大小后,编写了以下代码。但是,当我尝试使用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***)

我发现了一篇关于接收缓冲区大小的类似文章。 Socket buffer size not increasing。但是无法确定是否还有设置可以关闭sndbuf大小自动调整功能。

我尝试使用以下方法关闭接收缓冲区的自动调整功能:

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

然后使用以下命令更改接收缓冲区的大小:

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

但这不会生效。

0 个答案:

没有答案