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

use*_*620 18 c sockets

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

listen(sockfd,SOMAXCONN);
Run Code Online (Sandbox Code Playgroud)

这是否意味着同时听到最大号码.连接插座?

Ner*_*ius 17

#include <sys/socket.h>

int listen (int socket, int backlog);
Run Code Online (Sandbox Code Playgroud)

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

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

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

可以看出这里.

  • 或者更可能,更符合其他BSD套接字#defines,SOcket MAXimum CONNections或SOcket MAXimum Connection Number (5认同)
  • 对于那些可能需要轻松记住SOMAXCONN意味着什么的人,我认为这是Socket Outstanding MAX CONNections的缩写.我可能弄错了,但无论如何它帮助我记住了!:-) (3认同)

iab*_*der 11

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

SOMAXCONN定义你允许通过的最大数量listen()这是128我的系统上.

您可以在手册页中阅读有关它的更多信息