#include <sys/socket.h>
int listen(int sockfd, int backlog);
sockfd是调用socket()函数的返回值,不用多解释。这里主要说明backlog参数的含义:
为了理解其中的backlog参数,我们必须认识到内核为任何一个给定的监听套接字维护两个队列:
(1)未完成连接队列,每个这样的SYN分节对应其中一项:已由某个客户发出并到达服务器,而服务器正在等待完成相应的TCP三路握手过程。这些套接字术语SYN_RCVD状态。
(2)已完成连接队列,每个已完成TCP三路握手过程的客户对应其中一项。这些套接字处于ESTABLISHED状态。
backlog参数就是上面两个队列总和的最大值。
本文详细解析了listen函数中backlog参数的作用,阐述了其与未完成连接队列和已完成连接队列的关系,揭示了内核如何管理监听套接字的连接请求。
1591

被折叠的 条评论
为什么被折叠?



