其中';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的定义如下: