C++ socket listen() 第二个参数的问题
这个值 是不是越大越好呢?
我经过反复测试 发现1和5没什么区别
求解惑 这个参数到底会影响什么呢? 求大神指点~ 展开
The behavior of the backlog argument on TCP sockets changed with Linux 2.2. Now it specifies the queue length for completely established sockets waiting to be accepted, instead of the number of incomplete connection requests. The maximum length of the queue for incomplete sockets can be set using /proc/sys/net/ipv4/tcp_max_syn_backlog. When syncookies are enabled there is no logical maximum length and this setting is ignored. See tcp(7) for more information.
在linux 2.2以后 listen的第二个参数。指的是在完成TCP三次握手后的队列。即在系统accept之前的队列。已经完成的队列。如果系统没有调用accpet把这个队列的数据拿出来。一旦这个队列满了。未连接队列的请求过不来。导致未连接队列里的请求会超时或者拒绝。如果系统调用了accpet队列接受请求数据。那么就会把接受到请求移除已完成队列。 这时候已完成队列又可以使用了。
最后 说了如果开启了syncookies 忽略listen的第二个参数。
如果设置成5 是不是就是说只能支持5个客户端进行连接?
是的,表示最多只能支持5个链接,当然也可以是4个3个等