Listen 函数使用手册(译)

函数名 listen : 监听socket连接

 #include <sys/types.h>          /* See NOTES */
 #include <sys/socket.h>
 int listen(int sockfd, int backlog);

描述

该函数把 sockfd 变成了被动连接,也就是说,socket 要使用accept() 接收到达的连接请求。

sockfd 参数是 类型为SOCK_SEQPACKET或者SOCK_STREAM(tcp)的socket字

backlog 参数 定义了sockfd请求队列的最大长度,如果请求队列满了,客户端会收到ECONNREFUSED的错误或者如果协议支持重传,该请求会被忽略,之后会再次尝试连接。

返回值

成功返回0,失败返回-1,并且置位errno。

错误情况

  1. EADDRINUSE : 其他的socket 已经在监听了该端口。
  2. EADDRINUSE(和上面一样): socket并未和某一个固定端口绑定,和一个临时端口绑定了,所有的临时端口都被占用了。
  3. EBADF:无效的描述符。
  4. ENOTSOCK:不是socket类型的套字节。
  5. EOPNOTSUPP:该类型并不支持listen操作。

注意

在开始接收连接的步骤如下:

  1. 必须通过socket()创建一个socket 描述符
  2. 使用bind与本地的端口绑定,其他的socket才可能和它连接。
  3. 必须通过listen 指定请求连接队列的大小。
  4. 使用accept 函数接收。

Leave a comment

Your email address will not be published.

*