Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
其中';c中定义的常量SOMAXCONN是什么?_C_Network Programming - Fatal编程技术网

其中';c中定义的常量SOMAXCONN是什么?

其中';c中定义的常量SOMAXCONN是什么?,c,network-programming,C,Network Programming,我原以为它是在编译时从/proc/sys/net/core/somaxconn中检索的,但在我通过echo 1024>/proc/sys/net/core/somaxconn将它修改为1024之后,somaxconn在我的程序中仍然是128 printf("---------------set socket to listen,maxconn is %d--------------\r\n\r\n", SOMAXCONN); // set socket to listen

我原以为它是在编译时从
/proc/sys/net/core/somaxconn
中检索的,但在我通过
echo 1024>/proc/sys/net/core/somaxconn
将它修改为
1024
之后,
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,但它不在那里


在哪里/如何更改其值?

在我的系统上,它在
位/socket.h中定义

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

根据,您不需要使用SOMAXCONN。只需指定您想要的数字,它将被限制为实际最大值。

在我的系统上,它在
位/socket.h中定义

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

根据,您不需要使用SOMAXCONN。只需指定您想要的数字,它将被限制为实际的最大值。

在Linux下,它似乎在这里:

$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/bits/socket.h:#define SOMAXCONN    128
$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/sys/socket.h:#define   SOMAXCONN   128
在Mac OS X和BSD下,它似乎在这里:

$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/bits/socket.h:#define SOMAXCONN    128
$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/sys/socket.h:#define   SOMAXCONN   128

i、 e.在这两种情况下,它都是socket.h
,但它们似乎生活在不同操作系统上的不同位置。

在Linux下,它似乎位于以下位置:

$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/bits/socket.h:#define SOMAXCONN    128
$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/sys/socket.h:#define   SOMAXCONN   128
在Mac OS X和BSD下,它似乎在这里:

$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/bits/socket.h:#define SOMAXCONN    128
$ find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
/usr/include/sys/socket.h:#define   SOMAXCONN   128

i、 e.在这两种情况下,它都是
socket.h
,但它们似乎位于不同操作系统的不同位置。

它应该位于
tcp.h
中。请看:@Evan Mulawski,刚刚检查过,不在那里……那么
/etc/sysctl.conf
呢?它应该位于
kern.ipc.somaxconn
下。您可以使用以编程方式更改值。@Evan Mulawski,我决定在我的程序中对数字进行硬编码
listen(sock\u listen,1024)
sysctl
是一个bash命令,如何在我的程序中使用它?它应该在
tcp.h
中。请看:@Evan Mulawski,刚刚检查过,不在那里……那么
/etc/sysctl.conf
呢?它应该位于
kern.ipc.somaxconn
下。您可以使用以编程方式更改值。@Evan Mulawski,我决定在我的程序中硬编码数字
listen(sock\u listen,1024)
sysctl
是一个bash命令,我如何在我的程序中使用它?在我的Ubuntu 12.04上,它位于/usr/include/i386 linux gnu/bits/socket.h中。SOMAXCONN是由在我的Ubuntu 12.04上定义的,它位于/usr/include/i386 linux gnu/bits/socket.h中。SOMAXCONN的定义如下: