前面的的文章,我们已经知道在ngx初始化的时候,会将listening数组中的监听端口全部打开,那么这里就有问题,这些socket的信息是在哪里获取的呢?这篇文章将会对此进行分析。
首先先看监听端口的定义:(src/core/ngx_connection.h)
struct ngx_listening_s {
ngx_socket_t fd; //int类型,socket描述符
struct sockaddr *sockaddr; //地址结构
socklen_t socklen; /* size of sockaddr */
size_t addr_text_max_len;
ngx_str_t addr_text;
int type;
int backlog;
int rcvbuf; //接受缓冲区
int sndbuf; //发送缓冲区
#if (NGX_HAVE_KEEPALIVE_TUNABLE)
int keepidle;
int keepintvl;
int keepcnt;
#endif
/* handler of accepted connection */
ngx_connection_handler_pt handler; //处理函数,该函数将会用来当accept新的连接,并为该socket分配空闲的conne