【发布时间】:2013-08-06 06:52:37
【问题描述】:
我对 C(Linux Ubuntu) 中套接字编程中的 somaxconn 一无所知。我搜索了几个站点,但所有这些都对我没有多大帮助。
listen(sockfd,SOMAXCONN);
这是否意味着同时收听最大数量。连接的套接字数?
【问题讨论】:
我对 C(Linux Ubuntu) 中套接字编程中的 somaxconn 一无所知。我搜索了几个站点,但所有这些都对我没有多大帮助。
listen(sockfd,SOMAXCONN);
这是否意味着同时收听最大数量。连接的套接字数?
【问题讨论】:
#include <sys/socket.h>
int listen (int socket, int backlog);
backlog 参数为实现提供了一个提示,实现应使用该提示来限制套接字侦听队列中未完成连接的数量。实现可能会对积压施加限制并默默地减少指定的值。通常,较大的 backlog 参数值将导致侦听队列的长度更大或相等。实现应支持高达
SOMAXCONN的积压值,在<sys/socket.h>中定义。如果使用小于 0 的积压参数值调用
listen(),则函数的行为就像使用积压参数值 0 调用它一样。积压参数为 0 可能允许套接字接受连接,在这种情况下,侦听队列的长度可以设置为实现定义的最小值。
如here所见。
【讨论】:
简单地说,积压是您希望在套接字上排队的最大连接数。这个队列在那里,因此您可以在其他人排队等待时处理来自客户端的连接,积压指定您想要这条线多长时间成为。如果更多客户端尝试连接到您的服务器,而不是积压,这些连接将被丢弃。
SOMAXCONN 定义了您可以传递给listen() 的最大数量,即我系统上的128。
您可以在man page 中阅读更多相关信息
【讨论】: