2013-08-06 64 views

回答

14
#include <sys/socket.h> 

int listen (int socket, int backlog); 

积压参数提供一个提示,其实施应使用限制套接字的侦听队列未完成的连接数的实现。实现可能对积压施加限制,并默默地减少指定的值。通常,较大的积压参数值应导致监听队列的长度或长度相等。实现应支持积压了值SOMAXCONN,在<sys/socket.h>定义。

如果listen()是带一个积压参数值小于0,则该函数的行为就好像它已被调用的0

积压参数值的0积压参数可以允许插座接受连接,在这种情况下,监听队列的长度可以设置为实现定义的最小值。

如所见here

+2

对于那些可能需要很容易记住什么SOMAXCONN意味着阅读更多关于它,我认为这是短期的插座优秀MAX连接。我可能会误解,但它无论如何也帮助我记住! :-) – rhgrant10

+3

或者更可能的是,与其他BSD套接字的#define,插座最大连接或插座的最大连接数 – uchuugaka

+0

为使用文本格式的报价是报价较为一致。 – EJP

7

简单地说,积压是你想要一个套接字上的排队连接的最大数目。这队列有这样你就可以处理来自客户端的连接,而其他人在排队等候,积压指定你想要这个多久行。如果有更多的客户端尝试连接到您的服务器,而不是积压,则这些连接将被丢弃。

SOMAXCONN定义您允许传递给我的系统的最大数量为listen(),即128

您可以在man page

+0

这些连接将被Windows删除。其他平台会忽略它们,这会导致客户端重试几次,如果仍然没有响应,则会超时。 – EJP