时间:2021-07-01 10:21:17 帮助过:35人阅读
这个结构体在Nginx中用来监听一个端口。位于“Nginx包/src/core/ngx_connection.h”下。
typedefstruct ngx_listening_s ngx_listening_t;
struct ngx_listening_s {
//socket套接字句柄
ngx_socket_t fd;
//监听sockaddr地址struct sockaddr *sockaddr;
//sockaddr地址长度
socklen_t socklen;
/* 存储IP地址的字符串addr_text最大长度,即指定了addr_text所分配的内存大小 */
size_t addr_text_max_len;
//以字符串形式储存IP地址
ngx_str_t addr_text;
//套接字类型int type;
/* TCP实现监听时的backlog队列,它表示允许正在通过三次握手建立连接但还未任何进程开始处理连接的最大数 */int backlog;
//内核中对于这个套接字的接收缓冲区大小int rcvbuf;
//内核中对这个套接字的发送缓冲区大小int sndbuf;
//新的TCP连接成功后的处理方法
ngx_connection_handler_pt handler;
/* 保存当前监听端口对应的所有主机名 */void *servers;
//log和logp都是可用日志对象指针
ngx_log_t log;
ngx_log_t *logp;
//为新的TCP连接创建内存池的大小
size_t pool_size;
//TCP连接建立后,在post_accept_timeout秒之后仍然没有收到用户数据,则内核直接丢弃连接
ngx_msec_t post_accept_timeout;
//指向前一个ngx_listening_t结构
ngx_listening_t *previous;
//当前监听句柄对应着的ngx_connection_t结构体
ngx_connection_t *connection;
//1:当前监听句柄有效;0:正常关闭unsigned open:1;
//1:用已有的ngx_cycle_t来初始化ngx_cycle_t结构体时,不关闭监听端口,对于运行中升级有用unsigned remain:1;
//1:跳过设置当前ngx_listening_t结构体中的套接字;0:正常初始化unsigned ignore:1;
//表示是否以绑定unsigned bound:1;
//1:当前监听句柄来自前一个进程unsigned inherited:1;
//未使用unsigned nonblocking_accept:1;
//1:已开始监听unsigned listen:1;
//表示是否阻塞unsigned nonblocking:1;
//无意义unsigned share:1;
//1:Nginx将网络地址转变为字符串形式的地址unsigned addr_ntop:1;
};
//在监听端口上成功建立新的TCP连接后,回调handler方法typedefvoid (*ngx_connection_handler_pt)(ngx_connection_t *c);
版权声明:Pain is just in your mind.
以上就介绍了ngx_listening_s,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。