SOMAXCONN在C套接字编程中意味着什么?

时间:2013-08-06 06:52:38

标签: c sockets

我对C语言(Linux Ubuntu)中的socket编程中的somaxconn一无所知。我搜索了几个站点,但所有这些对我帮助不大。

listen(sockfd,SOMAXCONN);

这是否意味着同时听到最大号码。连接套接字?

2 个答案:

答案 0 :(得分:15)

#include <sys/socket.h>

int listen (int socket, int backlog);
  

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

     

如果使用小于0的backlog参数值调用listen(),则该函数的行为就像使用backlog参数值0调用它一样。

     

backlog参数为0可能允许套接字接受连接,在这种情况下,侦听队列的长度可以设置为实现定义的最小值。

here

答案 1 :(得分:9)

简单地说,积压是你在套接字上想要的最大排队连接数。这个队列在那里你可以处理来自客户端的连接而其他人排队等待,积压指定你想要多长时间这一行成为。如果有更多客户端尝试连接到您的服务器,而不是积压,那么这些连接将被删除。

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

您可以在man page

中详细了解相关信息