socket listen backlog参数,如何判断这个值?

时间:2008-09-22 13:29:08

标签: c++ tcp sockets

我应该如何确定侦听套接字的backlog参数的用途?简单地指定一个非常大的数字是一个问题吗?

4 个答案:

答案 0 :(得分:32)

Winsock Programmer's FAQ中有一个很长的答案。它详细介绍了标准设置,以及在NT 4.0修补程序中添加的动态积压功能。

答案 1 :(得分:4)

我第二次使用SOMAXCONN,除非您有特定的理由使用短队列。

请记住,如果队列中没有空间用于新连接,则不会发送任何RST,允许客户端通过重新传输SYN自动继续尝试连接。

此外,backlog参数在不同的套接字实现中可以有不同的含义。

  • 大多数意味着半开连接队列的大小,有些意味着已完成的连接队列的大小。
  • 在许多实现中,backlog参数将相乘以产生不同的队列长度。
  • 如果指定的值太大,则所有实现都会默默地将值截断为最大队列长度。

答案 2 :(得分:1)

来自docs

  

SOMAXCONN的积压值是一个特殊常量,它指示负责套接字的底层服务提供者将挂起连接队列的长度设置为最大合理值。

答案 3 :(得分:-2)

作为对使用boost asio的任何人的警告,SOMAXCONN值在升压时用作5。