套接字侦听积压参数,如何确定该值?
时间:2020-03-06 14:32:24 来源:igfitidea点击:
我应该如何确定对侦听套接字的积压参数使用什么?仅指定一个很大的数字是否有问题?
解决方案
从文档中:
A value for the backlog of SOMAXCONN is a special constant that instructs the underlying service provider responsible for socket s to set the length of the queue of pending connections to a maximum reasonable value.
Winsock程序员的常见问题解答对此有很长的答案。它详细介绍了标准设置以及在NT 4.0修补程序中添加的动态积压功能。
我第二次使用SOMAXCONN,除非我们有特定的原因使用短队列。
请记住,如果队列中没有空间用于新连接,则不会发送任何RST,从而允许客户端通过重新传输SYN自动继续尝试连接。
同样,backlog参数在不同的套接字实现中可以具有不同的含义。
- 在大多数情况下,它表示半开连接队列的大小,在某些情况下,它表示已完成连接队列的大小。
- 在许多实现中,backlog参数将相乘以产生不同的队列长度。
- 如果指定的值太大,无论如何,所有实现都会默默地将该值截断为最大队列长度。
作为对使用boost asio的任何人的警告,SOMAXCONN值与boost一起使用为5.