linux so sndbuf大小,了解set / getsockopt SO_SNDBUF大小加倍
嗨,我有以下程序來檢查UDP套接字的發送緩沖區大小。但是,我的返回值讓我有些困惑。我使用以下簡單的應用程序:
#include
#include
int main(int argc, char **argv)
{
int sockfd, sendbuff;
socklen_t optlen;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if(sockfd == -1)
printf("Error");
int res = 0;
// Get buffer size
optlen = sizeof(sendbuff);
res = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, &optlen);
if(res == -1)
printf("Error getsockopt one");
else
printf("send buffer size = %d\n", sendbuff);
// Set buffer size
sendbuff = 98304;
printf("sets the send buffer to %d\n", sendbuff);
res = setsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, sizeof(sendbuff));
if(res == -1)
printf("Error setsockopt");
// Get buffer size
optlen = sizeof(sendbuff);
res = getsockopt(sockfd, SOL_SOCKET, SO_SNDBUF, &sendbuff, &optlen);
if(res == -1)
printf("Error getsockopt two");
else
printf("send buffer size = %d\n", sendbuff);
return 0;
}
我的機器上的輸出是:
發送緩沖區大小= 129024
將發送緩沖區設置為98304
新的發送緩沖區大小= 196608
任何人都可以在這里弄清楚我在做什么錯或如何解釋輸出嗎?
總結
以上是生活随笔為你收集整理的linux so sndbuf大小,了解set / getsockopt SO_SNDBUF大小加倍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RC一阶低通滤波器
- 下一篇: python socket 获取目的ip