Где констант SOMAXCONN, определенный в c? - PullRequest
0 голосов
/ 19 мая 2011

Я думал, что это было извлечено во время компиляции из /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 ]

3 голосов
/ 19 мая 2011

Под 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, но, кажется, они живут в разных местах в разных операционных системах.

2 голосов
/ 19 мая 2011

В моей системе это определено как bits/socket.h

/* Maximum queue length specifiable by listen.  */
#define SOMAXCONN   128

Согласно this вам не нужно использовать SOMAXCONN.Просто укажите желаемое число, и оно будет ограничено фактическим максимумом.

...