11.5.1 ngx_listening_s结构体

时间 : 16-03-29 栏目 : nginx专题 作者 : 老薛 评论 : 0 点击 : 701 次

该结构体用于描述Nginx服务器在运行过程中使用的网络套接字socket的详细属性信息。每个这样的结构体会对应Nginx配置中配置的多个虚拟主机,以及对应一个ngx_connection_s结构体。该结构体的完整定义在/nginx/src/core/ngx_connection.h文件中可以找到,成员比较复杂,我们只介绍与后面学习相关的重要成员。

    struct ngx_listening_s {  
        ngx_socket_t        fd;  
        struct sockaddr     *sockaddr;  
        socklen_t           socklen;                                //sockaddr长度  
        ……  
        int                     rcvbuf;  
        int                     sndbuf;  
        ……  
        ngx_connection_handler_pt   handler;  
        void                *servers;   
        ……  
        ngx_connection_t    *connection;  
        unsigned            open:1;  
        unsigned            remain:1;  
        unsigned            ignore:1;  
        unsigned            bound:1;                                //绑定标志位  
        unsigned            inherited:1;                            //继承标志位  
        unsigned            nonblocking_accept:1;  
        unsigned            listen:1;  
        unsigned            nonblocking:1;  
        unsigned            shared:1;                           //进程或线程共享标志位  
        unsigned            addr_ntop:1;  
    };  

fd,存放打开的socket描述符。

*sockaddr,存放socket路径的相关信息。

socklen_t,保存当前socket信息的长度。

rcvbuf和sndbuf,接收缓存区和发送缓存区的长度。

handler,指向处理函数的函数指针,ngx_connection_handler_pt定义在/nginx/src/core/ngx_ core.h文件中:

    typedef void (*ngx_connection_handler_pt)(ngx_connection_t *c);   

*servers,保存所有虚拟主机的相关信息。

*connection,指向该socket对应的ngx_connection_s结构。在ngx_connection_s结构体中也有一个成员指向该socket结构。

后面类型为unsigned的变量是一些标志位,用来标识当前socket的状态。

本文标签

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/nginx-2/1559.html

11.5.1 ngx_listening_s结构体:等您坐沙发呢!

发表评论

4 + 9 = ?


博主微信号,很高兴为您提供帮助

随便看看

0