我认为它是在编译时从/proc/sys/net/core/somaxconn
检索的,但在我1024
将其修改为echo 1024 > /proc/sys/net/core/somaxconn
后,SOMAXCONN
仍为128
我的程序。
printf("---------------set socket to listen,maxconn is %d--------------\r\n\r\n", SOMAXCONN);
// set socket to listen
if (listen(sock_listen, SOMAXCONN) != 0)...
我已经检查了sys/socket.h
,但它不存在......
我在哪里/如何更改其价值?
答案 0 :(得分:3)
在Linux下似乎就在这里:
$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/bits/socket.h:#define SOMAXCONN 128
在Mac OS X和BSD下,它似乎在这里:
$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/sys/socket.h:#define SOMAXCONN 128
即。在这两种情况下它都是socket.h
,但它们似乎生活在不同操作系统的不同位置。
答案 1 :(得分:2)
在我的系统上,它在bits/socket.h
/* Maximum queue length specifiable by listen. */
#define SOMAXCONN 128
根据this,您不需要使用SOMAXCONN。只需指定您想要的数字,它将被限制为实际最大值。