现在的位置: 首页 > 综合 > 正文

listen函数中backlog参数的意义

2013年02月02日 ⁄ 综合 ⁄ 共 779字 ⁄ 字号 评论关闭

1.MSDN上的解释

The listen function places a socket in a state in which it is listening for an incoming connection.

int listen(
  SOCKET s,
  int backlog
);
s
[in] Descriptor identifying a bound, unconnected socket.
backlog
[in] Maximum length of the queue of
pending connections
(未决连接).
2.《TCP/IP详解 卷1:协议》的Page195详细解释
  1)backlog 用于在TCP层接收链接的缓冲池的最大个数,这个个数可在应用层中的listen函数里设置,当客户链接请求大于这个个数(缓冲池满),其它的未进入链接缓冲池的客户端在tcp层上tcp模块会自动重新链接,直到超时(大约57秒后)  

  2)应用层链接(connect)完成时,要从tcp层的链接缓冲池中移出一个(accept函数实现)
3.backlog是连接请求队列的最大长度

  1.在WinSock1.1中最大值5。如果backlog小于1,则backlog被置为1;若backlog大于SOMAXCONN(定义在winsock.h中,值为5),则backlog被置为SOMAXCONN。  

  2.在WinSock2中,没有制定具体值,它由服务提供者决定  
  3.有时候backlog设置很小,这时我们接进多少台机器都没问题是因为服务器机器处理速度很快队列来不及填满就处理完了,而且在同一个时刻到来的连接还是很少的

参考:
http://topic.csdn.net/t/20021112/10/1168603.html

转自http://blog.chinaunix.net/uid-17102734-id-2830185.html

抱歉!评论已关闭.