getaddrinfo

int getaddrinfo(
    const char* hostname,  //主机名 or 地址串(IPv4点分十进制、IPv6十六进制数串)
    const char* service,   //服务名 or 十进制端口号数串
    const struct addrinfo* hints,  //调用者在这个结构中填入关于[期望返回]的信息类型的暗示
    struct addrinfo** result  //传出参数,保存getaddrinfo获得的信息,是一个链表linked-list
);

通过 hostname、service 形参,使 getaddrinfo 函数获得信息,保存到传出参数 result 中。获取的信息有哪些?详细请见 struct addrinfo 结构体介绍。

struct addrinfo{
    int               ai_flags;       //AI_PASSIVE、AI_CANONNAME
    int               ai_family;      //AF_XXXX:AF_INET
    int               ai_socktype;    //SOCK_XXXX:SOCK_STREAM、SOCK_DGRAM
    int               ai_protocol;    //0 or IPPROTO_XXXX for IPv4 and IPv6
    char             *ai_canonname;   //主机规范名
    
    socklen_t         ai_addrlen;     //length of ai_addr

    struct sockaddr  *ai_addr;        //指向套接字地址结构
    struct sockinfo  *ai_next;        //ptr to next structure in linked-list
}

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/91848804