#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
具有相同的值吗?