我对C语言(Linux Ubuntu)中的socket编程中的somaxconn一无所知。我搜索了几个站点,但所有这些对我帮助不大。
listen(sockfd,SOMAXCONN);
这是否意味着同时听到最大号码。连接套接字?
答案 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
中详细了解相关信息