我在学习listen函数的过程中,一开始对于backlog参数有股很模糊的理解,并不知道这个东西是干什么的,有什么用处?
在后面的学习中,查询了一些资料,在这里对于我自己理解的backlog参数做一个简单的整理,方便自己以后查阅.
-
listen函数的回顾
backlog参数和TCP/IP协议有密切相关的联系
要了解backlog参数的作用,需要回到listen函数中来进行理解的. -
首先我们来谈谈listen函数有什么作用?
listen函数仅仅由TCP服务器来进行调用,它在网络编程中用来使服务器端来开始 监听端口的系统调用,即把主动连接的套接字变化为被连接的套接字,检测套接字上有无I/O事件. -
listen函数的定义
#include<sys/socket.h>
int listen(int sockfd,int backlog); -
listen函数一般在socket和bind函数之后,accept函数之前调用
-
backlog参数的含义
我查询了网上很多资料,他们的说法都各不一样
都是内核为一个给定的监听套接字维护队列,我自己的理解是内核为给定的监听套接字维护两个队列- 一个是SYN队列,某个客户发出并到达服务器,而服务器正在等待TCP的三次握手,处于SYN_RCVD状态
- 一个是ACCEPT队列,保存着已经完成了TCP的三次握手