Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1500976
  • 博文数量: 218
  • 博客积分: 6394
  • 博客等级: 准将
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-08 15:33
个人简介

持之以恒

文章分类

全部博文(218)

文章存档

2013年(8)

2012年(2)

2011年(21)

2010年(55)

2009年(116)

2008年(16)

分类: 网络与安全

2010-03-11 14:45:55

1.MSDN上的解释

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

int listen( SOCKET ,  int  ); 
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设置很小,这时我们接进多少台机器都没问题是因为服务器机器处理速度很快队列来不及填满就处理完了,而且在同一个时刻到来的连接还是很少的
参考:
 
阅读(8078) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~