LISTEN - Linux手册页
Linux程序员手册 第2部分
更新日期: 2020-06-09
名称
listen-监听套接字上的连接
语法
#include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int listen(int sockfd, int backlog);
说明
listen()将sockfd所引用的套接字标记为被动套接字,即,该套接字将用于使用accept(2)接受传入的连接请求。
sockfd参数是一个文件描述符,它引用类型为SOCK_STREAM或SOCK_SEQPACKET的套接字。
backlog参数定义sockfd的未决连接队列可以增长到的最大长度。如果在队列已满时连接请求到达,则客户端可能会收到带有ECONNREFUSED指示的错误,或者,如果基础协议支持重新传输,则可以忽略该请求,以便以后在连接时重新尝试成功。
返回值
成功时,返回零。如果出错,则返回-1,并正确设置errno。
错误说明
- EADDRINUSE
- 另一个套接字已经在同一端口上侦听。
- EADDRINUSE
- (Internet域套接字)sockfd引用的套接字以前未绑定到地址,并且在尝试将其绑定到临时端口后,确定当前临时端口范围内的所有端口号都在使用中。请参阅ip(7)中对/ proc / sys / net / ipv4 / ip_local_port_range的讨论。
- EBADF
- 参数sockfd不是有效的文件描述符。
- ENOTSOCK
- 文件描述符sockfd不引用套接字。
- EOPNOTSUPP
- 套接字不是支持listen()操作的类型。
遵循规范
POSIX.1-2001,POSIX.1-2008、4.4BSD(listen()首次出现在4.2BSD中)。
备注
要接受连接,请执行以下步骤:
POSIX.1不需要包含,并且在Linux上不需要此头文件。但是,某些历史(BSD)实现需要此头文件,而可移植的应用程序最好将其包括在内。
在Linux 2.2上,TCP套接字上的backlog参数的行为已更改。现在,它为等待接受的已完全建立的套接字指定队列长度,而不是未完成的连接请求数。可以使用/ proc / sys / net / ipv4 / tcp_max_syn_backlog设置不完整套接字的队列的最大长度。启用syncookie时,没有逻辑最大长度,并且此设置将被忽略。有关更多信息,请参见tcp(7)。
如果backlog参数大于/ proc / sys / net / core / somaxconn中的值,那么它将被静默截断为该值。从Linux 5.4开始,此文件的默认值为4096;默认值为4096。在早期的内核中,默认值为128。在2.4.25之前的内核中,此限制是硬编码值SOMAXCONN,其值为128。
示例
参见bind(2)。
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。