之前对于listen的第二个参数的理解,只是停留在它代表服务器缓冲区队列的大小层面上,具体并没有详细研究过,一次偶然的tcp实验,发现了很大的bug。
当服务器端没有调用accept函数时,此时3个客户端同时连接服务器,用netstat查看服务器状态,但是当启动第4个客户端时,发现客户端状态正常,服务器出现了SYN_RECV状态,而不是ESTABLISHED状态,如下图所示:

这是因为,Linux内核协议栈为一个tcp连接管理使用两个队列,分别是:
半连接队列:用来保存SYN_SENT和SYN_RECV两个状态的连接
全连接队列:用来保存保存ESTABLISHED状态的连接
全连接队列存放三次握手成功的连接。当服务器不调用accept函数,没有将全连接队列的请求拿出来,当队列满的时候,客户端的连接就无法再过来,即存放在半连接队列中,所以此实验中当第4个客户端发起连接时,服务器会处于SYN_RECV状态。
注意:全队列的长度是listen的第二个参数+1

listen的第二个参数详解相关推荐

  1. OPenCV imread()函数第二个参数详解

    在OpenCV官方文档中imread()函数的原型如下: Mat imread(const string& filename, int flags = 1); 第一个参数filename是我们 ...

  2. ioctl函数详解(参数详解,驱动unlocked_ioctl使用、命令码如何封装)

    @ioctl函数详解 一.ioctl函数的原型 在用户空间的函数原型 #include <sys/ioctl.h> int ioctl(int d, int request, ...); ...

  3. TCP listen() Backlog 参数详解

    int listen(int fd, int backlog); socket系统调用listen只被tcp 服务器使用,他做两件事: 1. 将未链接的套接口转换为被动套接口,指示内核接受向此套接口的 ...

  4. CI流水线配置文件参数详解(一)

    文章目录 4. 参数详解(一) 4.1 ``script`` 4.2 ``image`` 指定使用Docker镜像.如 ``iamge:name`` ,暂时忽略. 4.3 ``before_scrip ...

  5. plot参数详解python_30行Python代码实现3D数据可视化

    作者:潮汐 来源:Python技术 欢迎来到编程教室~ 我们之前的文章中有讲解过不少 Matplotlib 的用法,比如: 完成这50个Matplotlib代码,你也能画出优秀的图表 25个常用Mat ...

  6. Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解

    Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...

  7. Lesson 8.1Lesson 8.2 决策树的核心思想与建模流程CART分类树的建模流程与sklearn评估器参数详解

    Lesson 8.1 决策树的核心思想与建模流程 从本节课开始,我们将介绍经典机器学习领域中最重要的一类有监督学习算法--树模型(决策树). 可此前的聚类算法类似,树模型也同样不是一个模型,而是一类模 ...

  8. 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?

    系列 <使用sklearn进行集成学习--理论> <使用sklearn进行集成学习--实践> 目录 1 Random Forest和Gradient Tree Boosting ...

  9. Retrofit 注解参数详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121000230 本文出自[赵彦军的博客] 系列文章推荐: Android Flow ...

最新文章

  1. 特征选择之嵌入法、嵌入法、排列重要性
  2. [转]深刻理解Python中的元类(metaclass)
  3. Leetcode 172. 阶乘后的零 解题思路及C++实现
  4. fcn网络结构代码_FCN实现2-模型结构及实现
  5. mysql单列去重复group by分组取每组前几条记录加order by排序
  6. 网络编程之Socket【Python】
  7. P3768-简单的数学题【莫比乌斯反演,杜教筛】
  8. OJ1059: 最高分(C语言)
  9. ios 企业证书 ipa 重新签名发布
  10. mac 下设置 sublime text2 的命令行快捷方式 subl
  11. java怎么用一行代码初始化ArrayList
  12. flash文件怎么打开 怎么将swf格式转换成avi视频
  13. 一个浏览图片新闻的App
  14. oracle脱敏脚本
  15. 当3A射击游戏遇上Play to Earn,暴躁兔带你了解MetalCore
  16. 人工智能——产生式规则
  17. 公司午休 同事打鼾怎么办?
  18. PS如何查看所选图层的实际像素?
  19. 关于大象,冰箱和软件项目报价的故事
  20. 微信公众号更新缓存问题--批量添加版本号

热门文章

  1. IDL实现MODIS Grid(正弦投影)产品的重投影及拼接处理
  2. 跨境电商:TikTok短视频营销攻略
  3. (三十一)论文阅读 | 文本检测之EAST
  4. dir under linux.Linux下的类dir程序.
  5. Variational graph auto-encoders (VGAE)
  6. 1、fluentd安装
  7. windows 命令行重启
  8. 贪吃蛇c语言程序复杂,刚学C语言,想写一个贪吃蛇的代码
  9. LCS、LIS及LCIS
  10. 心形符号c语言程序,c语言心形代码及图形