哪个是c中定义的const SOMAXCONN?

时间:2011-05-19 12:45:50

标签: c network-programming

我认为它是在编译时从/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,但它不存在......

我在哪里/如何更改其价值?

2 个答案:

答案 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。只需指定您想要的数字,它将被限制为实际最大值。