【问题标题】:what do SOMAXCONN mean in C socket programming?SOMAXCONN 在 C 套接字编程中是什么意思?
【发布时间】:2013-08-06 06:52:37
【问题描述】:

我对 C(Linux Ubuntu) 中套接字编程中的 somaxconn 一无所知。我搜索了几个站点,但所有这些都对我没有多大帮助。

listen(sockfd,SOMAXCONN);

这是否意味着同时收听最大数量。连接的套接字数?

【问题讨论】:

    标签: c sockets


    【解决方案1】:
    #include <sys/socket.h>
    
    int listen (int socket, int backlog);
    

    backlog 参数为实现提供了一个提示,实现应使用该提示来限制套接字侦听队列中未完成连接的数量。实现可能会对积压施加限制并默默地减少指定的值。通常,较大的 backlog 参数值将导致侦听队列的长度更大或相等。实现应支持高达SOMAXCONN 的积压值,在&lt;sys/socket.h&gt; 中定义。

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

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

    here所见。

    【讨论】:

    • 对于那些可能需要轻松记住 SOMAXCONN 含义的人,我认为它是 Socket Excellence MAX CONNections 的缩写。我可能弄错了,但无论如何它都能帮助我记住! :-)
    • 或更可能,并且与其他 BSD Sockets #defines、SOcket MAXimum CONNections 或 SOcket MAXimum CONnection Number 更一致
    【解决方案2】:

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

    SOMAXCONN 定义了您可以传递给listen() 的最大数量,即我系统上的128

    您可以在man page 中阅读更多相关信息

    【讨论】:

    • 这些连接将被 Windows 删除。它们将被其他平台忽略,这将导致客户端重试几次,如果仍然没有响应则超时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-05-23
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2012-05-28
    • 2011-07-07
    相关资源
    最近更新 更多