调用getaddrinfo时,在字段ai_canonname中可以期待什么

时间:2016-01-17 03:21:12

标签: linux sockets getaddrinfo

#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>

int main(void)
{
    int ret;
    struct addrinfo hints;
    struct addrinfo *res;
    struct addrinfo *p;

    bzero(&hints, sizeof(hints));
    hints.ai_family = AF_UNSPEC;            // IPV4 or IPV6
    hints.ai_socktype = SOCK_STREAM;        // TCP
    hints.ai_flags = AI_CANONNAME;

    if ((ret=getaddrinfo("216.58.221.36", NULL, &hints, &res)) != 0) {     // here 
        exit(-1);
    }
    p = res; 
    printf("%s\n", p->ai_canonname);
    return 0;
}

如果上面getaddrinfo的第一个参数为216.58.221.36,则输出为:216.58.221.36

如果getaddrinfo的第一个参数为www.google.com,则输出为www.google.com

为什么呢?在这两种情况下,不应该ai_canonname具有相同的值吗?

0 个答案:

没有答案