socket_listen里面第二个参数backlog的用处

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket_listen里面第二个参数backlog的用处相关的知识,希望对你有一定的参考价值。

最近在写一个socket程序。发现网上对于socket_listen里面的第二个参数的作用解释的都是不是很清楚,所有就将自己的一些理解写出来,让大家参考下。

首先要明白三次握手的。当然能点进来的应该都知道什么是三次握手,这里就不废话了。

当有多个客户端一起请求的时候,服务端不可能来多少就处理多少,这样如果并发太多,就会因为性能的因素发生拥塞,然后造成雪崩。所有就搞了一个队列,先将请求放在队列里面,一个个来。socket_listen里面的第二个参数backlog就是设置这个队列的长度。如果将队列长度设置成10,那么如果有20个请求一起过来,服务端就会先放10个请求进入这个队列,因为长度只有10。然后其他的就直接拒绝。tcp协议这时候不会发送rst给客户端,这样的话客户端就会重新发送SYN,以便能进入这个队列。

如果三次握手完成了,就会将完成三次握手的请求取出来,放入另一个队列中,这样队列就空出一个位置,其他重发SYN的请求就可以进入队列中。

不过现在这个参数没什么用了,因为SYN Cookie。有机会给大家讲下SYN Cookie。

以上是关于socket_listen里面第二个参数backlog的用处的主要内容,如果未能解决你的问题,请参考以下文章

java线程里面Thread thread=new Thread(file,"aaa"),这里面第二个参数啥意思啊?

PHP socket_listen() 不工作

获取URL参数

2Python里面mapreducefilter函数的使用

vue插件使用文档

关于判断int是不是为空的问题。