1、listen函数的第二个参数,到底是指什么,是指一次可以同时链接的客户端数吗,还有他的默认值是多少,最多可以设置成多少,如果设置超过了最大值,实际又是多少;
2、accept函数,如果同时有多个客户端连接的话,那么accept是怎么处理的,能同时处理吗。
   当有多个客户端同一时间链接的时候,accept的工作原理是什么样的,他是怎么保证每个客户端都能连接的
   注:accept是在while语句里的。

解决方案 »

  1.   

    http://www.tenouk.com/Winsock/Winsock2example2.html
      

  2.   

    1、listen中第二个参数是等待连接队列的最大长度,默认是5。就是最大同时能处理5个并发连接请求
    2、accept会根据listen设定的个数,如果同时请求的个数多于设定的值,则只处理前面的几个请求,后面的不会响应。
      

  3.   

    1、listen的第二个参数是等待连接队列的最大长度,默认值一般是5,在windows下最大可以设置到200(或者更高,根据不同版本而定),解析下这个值:作为服务器端,在同一时间内可能有N个客户端同时要连接你,但是一个accept的能力有限,一次只能处理一个连接请求,难道不能立即处理的请求的连接就被抛弃掉吗?不是的,后面来的没被立即处理的连接也被系统压到一个稍后处理队列里了,只要这个队列还有连接存在,后面投递的accept请求都会得到很快返回,上面说了,一次同时来的连接可能数量非常大,比如一个web服务器,成百上千的连接同时过来都是有可能的,这个队列毕竟有限,如果超过了队列长度,这个队列就不再接受连接了,后来的连接都会被拒绝,这时客户端的connect将会返回失败。2、accept一次只能处理一个连接请求,没被处理的连接被系统根据自己的能力默认接受并放到上面说的那个队列里了,不再赘述