函数原型:

1 int listen(int sockfd,int backlog);

第二个参数规定了内核应该为相应套接字排队的最大连接个数,

为了理解其中的backlog 参数,我们必须认识到内核为任何一个给定的监听套接字维护着两个队列

(1):未完成连接队列。每个这样的syn分节对应其中一项:已由某个客户发出到达服务器,而服务器正在等待完成相应的TCP三鹿握手的过程,这些套接字处于SYN_RCVD状态。

(2):已完成连接队列。每个已经完成的三路握手的客户对应其中的一员,这些套接字处于ESTABLISHED状态。

当来自客户的syn到达的时候,TCP在未完成连接队列创建一个新项,当三次握手全部正常完成的时候该项就从未完成队列离开,移到已连接队列的队尾,当进程下次调用accept的时候,已完成连接队列的对头将返回给调用进程,如果队列为空,那么进程将被投入睡眠,直到有新的数据项到来才唤醒他。

对于backlog的最大值的问题,其值是可以修改的,指定一个很大的甚至大于内核所支持的值也是可以接受的,不过,内核会把该值设置成为自己能够支持的最大值。而不返回错误。

转载于:https://www.cnblogs.com/coversky/p/7847009.html

TCP listen()函数内幕相关推荐

  1. LwIP tcp/ip socket编程listen函数分析

    函数原型为: [cpp] view plain copy int listen(int  sockfd, int  backlog); <span style="font-family ...

  2. C语言网络编程:listen函数详解

    文章目录 前言 函数描述 代码实例 TCP服务器为什么调用listen 前言 根据TCP编程模型中我们可以看到之前的socket和bind接口是tcp服务器在为接收客户端的链接做准备,保证tcp的面向 ...

  3. 几个经典的TCP通信函数

    前言 在TCP通信中要使用到几个非常经典的函数( 点这里参考一个关于它们作用的形象比方 ),本文将对这几个函数进行一个简短的使用说明. socket函数 函数作用:创建一个网际字节流套接字 包含头文件 ...

  4. listen()函数中backlog参数分析

    背景知识 Unix网络编程描述如下: 总结 0. accept()函数不参与三次握手,而只负责从已建立连接队列中取出一个连接和sockfd进行绑定: 1. backlog参数决定了未完成队列和已完成队 ...

  5. C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求)

    摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被 ...

  6. linux网络编程之Listen函数参数介绍

    1.listen()函数介绍 listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器, ...

  7. 网络编程之 listen()函数的使用与三次握手的理解

    listen()函数 在进入我们的函数讲解前大家再回顾一下编写服务器端的流程 服务器端:socket()-->bind( )-->listen()-->accept()-->r ...

  8. listen()函数中的SOMAXCONN含义

    导读:在linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn 看下其解析: 对于一个TCP连接,Server与Client ...

  9. listen函数的第二个参数_signal(SIGPIPE,?SIG_IGN)listen函数中backlog参数分析

    signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端 ...

最新文章

  1. 带有BERT模型代码的BILSTM+BERT+CRF
  2. 日期格式化为yyyymmdd_大厂日期时间处理最佳实践
  3. IDOC实例, Inbound IDOC
  4. Scala分支控制 if-else之单分支的使用
  5. 正则表达式及shell
  6. CentOS/RHEL6.5中使用WordPress快速建站
  7. Mware HA实战攻略之五VMwareHA测试验收
  8. zxing二维码的生成与解码(C#)
  9. cameraraw预设_169个PS预设 ACR一键调出胶片效果 城市黑金效果 复古胶片色调
  10. 8 | Spatial-based GNN/convolution模型之GAT(受欢迎)
  11. ios开发--企业帐号发布
  12. au计算机内录音乐,win10 audition怎么内录_win10 audition如何录制声音
  13. 微信小程序uniapp实现小图标转成SVN代码
  14. ACC测试理论--google软件测试之道
  15. maven complie报错汇总
  16. mysql 是否支持Unix系统_在UNIX系统下安装MySQL
  17. 项目02_TalkingData Mobile User Demographics R代码
  18. -1-1 java 基础语法 java关键字 java 注释 常量 语句 运算符 函数 数组定义
  19. SIMD——MMX指令的溢出处理
  20. CpG ODN丨艾美捷ODN 1982 (synthetic)参数说明

热门文章

  1. Floodlight之 FloodlightContextStore 数据结构
  2. 附加没有日志文件的数据库方法
  3. leetcode 528. Random Pick with Weight
  4. Tomcat 集群中 实现session 共享的三种方法
  5. Oracle imp导入数据
  6. 限定filesize的数据泵导入导出操作案例
  7. 软件测试系列---软件测试基础
  8. 搭建hadoop2.6.0 HA及YARN HA
  9. Rxjava 实现接口回调的功能
  10. Android输入输出机制之来龙去脉