我们通过一个服务器程序,以研究backlog参数对listen系统调用的影响,运行截图如下

启动服务器程序,服务器程序正在等待客户端的连接

我们使用一次telnet命令就建立一个连接

打开多个终端窗口执行下列命名

#telnet 192.168.255.128 4444多次执行

然后我们执行如下netstat -nt |grep 4444,显示出listen监听队列中的内容

可见,在监听对列中,处于ESTABLISHD状态的连接只有4个(backlog值加1),其他的连接处于SYS_RCVD状态。我们改变服务器程序的第三个参数

并重新运行只,可发现同样的规律,即完整连接最多有(backlog+1)个,在不同的系统上,运行结果可能有所不同,不过监听队列中完整的连接上限,通常比backlog大!

如果想结束服务器程序我们可以按ctrl c组合键,来关闭服务器程序!但是为什么输出了视觉上的10组数据呢?

我认为因为连接过程中服务器和客户机之间连接时的交互,这样下来就是8组数据了,然后有一组连接处于SYS_RCVD(半连接状态),但是也和服务器进行了交互,所有共十组数据!

然后我们可以看见所有的客户端也关闭了!

connection closed by foreign host//连接被外部主机关闭,这里的外部主机是指服务器。

关闭服务器后我们再次执行下图所示的命令:

原文地址:https://www.cnblogs.com/leijiangtao/p/4441281.html