zoukankan      html  css  js  c++  java
  • addrinfo结构体原型-(转自 cxz2009)

    addrinfo结构体原型

    typedef struct addrinfo {
        int ai_flags;        //AI_PASSIVE,AI_CANONNAME,AI_NUMERICHOST
        int ai_family;        //AF_INET,AF_INET6
        int ai_socktype;    //SOCK_STREAM,SOCK_DGRAM
        int ai_protocol;    //IPPROTO_IP, IPPROTO_IPV4, IPPROTO_IPV6 etc.
        size_t ai_addrlen;            //must be zero or a null pointer
        char* ai_canonname;            //must be zero or a null pointer
        struct sockaddr* ai_addr;    //must be zero or a null pointer
        struct addrinfo* ai_next;    //must be zero or a null pointer
    }

    其中ai_flags、ai_family、ai_socktype说明如下:
    参数            取值            值            说明
    ai_family        AF_INET            2            IPv4
                    AF_INET6        23            IPv6
                    AF_UNSPEC        0            协议无关
    ai_protocol        IPPROTO_IP        0            IP协议
                    IPPROTO_IPV4    4            IPv4
                    IPPROTO_IPV6    41            IPv6
                    IPPROTO_UDP        17            UDP
                    IPPROTO_TCP        6            TCP
    ai_socktype        SOCK_STREAM        1            流
                    SOCK_DGRAM        2            数据报
    ai_flags        AI_PASSIVE        1            被动的,用于bind,通常用于server socket
                    AI_CANONNAME    2
                    AI_NUMERICHOST    4            地址为数字串

    对于ai_flags值的说明:
    AI_NUMERICHOST | AI_CANONNAME | AI_PASSIVE
    如上表所示,ai_flags的值范围为0~7,取决于程序如何设置3个标志位,比如设置ai_flags为 “AI_PASSIVE|AI_CANONNAME”,ai_flags值就为3。三个参数的含义分别为:
    (1)AI_PASSIVE当此标志置位时,表示调用者将在bind()函数调用中使用返回的地址结构。当此标志不置位时,表示将在connect()函数调用中使用。当节点名位NULL,且此标志置位,则返回的地址将是通配地址。如果节点名NULL,且此标志不置位,则返回的地址将是回环地址。
    (2)AI_CANNONAME当此标志置位时,在函数所返回的第一个addrinfo结构中的ai_cannoname成员中,应该包含一个以空字符结尾的字符串,字符串的内容是节点名的正规名。
    (3)AI_NUMERICHOST当此标志置位时,此标志表示调用中的节点名必须是一个数字地址字符串。
     
    转载链接:http://www.cnblogs.com/cxz2009/archive/2010/11/19/1881661.html
  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/-colin/p/7560342.html
Copyright © 2011-2022 走看看