关于网友提出的“ listen的第二个参数有用吗?”问题疑问,本网通过在网上对“ listen的第二个参数有用吗?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: listen的第二个参数有用吗?
描述: 我把listen的第2个参数设成0或1,还是可以3个客户端同时连上啊,请问大哥们在winsock里是不是没用啊?
解决方案1: listen(
IN SOCKET s,
IN int backlog
);
其中backlog参数是指等待处理的链接请求的最大个数。如果是同时有5个客户端发出链接请求,而backlog值为2,只有其中两个能够进入等待处理队列,其他三个返回连接失败错误。
至于0 我推测是默认值的意思 并非数字0
队列中等待的请求得到回应后会从队列中删除 所以实际的客户端数量可以大于 backlog 当然会受限于服务端的处理
解决方案2: backlog
[in] Maximum length of the queue of pending connections. If set to SOMAXCONN, the underlying service provider responsible for socket s will set the backlog to a maximum reasonable value. There is no standard provision to obtain the actual backlog value.
默认值在WS库1.1下5,在WS库2.0下是20。
backlog是积压值,对于TCP,通常建立连接时,会有3/4次握手的过程,一个client连接在完成了建立连接的握手过程,而还没有被应用层(应用程序)所响应时,这个连接被置于backlog队列中。当达到backlog队列以满时,client的连接请求会返回超时的错误。
以上介绍了“ listen的第二个参数有用吗?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2996538.html