man 2 listen

Posted 史昊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了man 2 listen相关的知识,希望对你有一定的参考价值。

摘要

#include <sys/types.h>    /*Portable consideration*/
#include <sys/socket.h>
int listen(int sockfd,int backlog)

描述

  listen()把套结字sockfd标记为被动套结字,也就是说这个套结字将通过accept()接受请求。

  参数sockfd一个文件描述符,指向类型为SOCK_STREAM或者SOCK_SEQPACKET的套结字。

  参数backlog定义了排队等待连接sockfd的最大长度。如果一个连接请求到来时,队列已满,那么客户端将会受到错误提示ECONNREFUSED,如果底层的协议支持重发送,那么请求会被忽略,稍后的连接请求可能会成功。

返回值

  成功执行返回0,出错返回-1并且相应的设置errno。

注意

  接受一个连接将会执行下面的步骤:

  1,创建一个套结字socket(int domain, int type, int protocol)

  2,绑定套结字到本地地址bind(int sockfd,const struct sockaddr *addr,socklen_t len),那么其他套结字就可以通过connect连接到该套结字

  3,准备接受到来的请求,并且设置最大请求连接队列长度listen(int sockfd,int backlog)

  4,接受请求连接accept(int sockfd,struct sockaddr *addr, socklen_t *len)

  POSIX.1-2001不要求包含头文件<sys/types.h>, 这个头文件在linux系统上是不要求的,然而一些历史版本(BSD)实现却要求该头文件,所以可移植的应用程序最要包含该头文件。

以上是关于man 2 listen的主要内容,如果未能解决你的问题,请参考以下文章

Android 调用组件 w/listener 或让 viewmodel 调用组件与片段通信

Python 向 Postman 请求代码片段

JSF:-DataType 和 Action Listener 的问题

linux学习:Nginx--常见功能配置片段与优化-06

servlet,filter,listener,intercepter区别

Python干货socket中的listen()参数(数字)到底代表什么?