listen() 函数

在 Socket 编程中,listen() 函数用于将一个套接字设置为被动模式,开始监听客户端的连接请求。listen() 函数的原型为:

int listen(int sockfd, int backlog);

其中,sockfd 是要监听的套接字描述符,backlog 是等待连接队列的最大长度。

调用 listen() 函数后,套接字就会进入被动模式,等待客户端的连接请求。当有新的客户端连接请求到达时,内核会将连接请求加入到一个等待连接队列中。backlog 参数指定等待连接队列的最大长度,如果等待连接队列已满,新的连接请求将被拒绝。

需要注意的是,调用 listen() 函数并不会阻塞当前进程,因此程序会立即返回,可以继续进行其他操作。此时,如果有新的客户端连接请求到达,内核会将其加入等待连接队列,并向程序发送一个可读事件通知,程序可以调用 accept() 函数处理连接请求。

一般情况下,backlog 参数的取值范围为 1~128,具体取值需要根据实际应用情况进行调整。如果应用中同时有大量的连接请求和并发处理,可以考虑增加等待连接队列的长度,以提高系统的并发处理能力。

参考: https://linux.die.net/man/2/listen

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:36:58

results matching ""

    No results matching ""