魏公村网站建设,外链建设原则,网站制作目标及要求,营销型网站重要性https://www.cnblogs.com/cxz2009/archive/2010/11/19/1881611.html
gethostbyname()函数说明——用域名或主机名获取IP地址 包含头文件#include netdb.h#include sys/socket.h函数原型struct hostent *gethostbyname(const char *name);这个函数的传入值是域…https://www.cnblogs.com/cxz2009/archive/2010/11/19/1881611.html
gethostbyname()函数说明——用域名或主机名获取IP地址 包含头文件#include netdb.h#include sys/socket.h函数原型struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名例如www.google.cn等等。传出值是一个hostent的结构。如果函数调用失败将返回NULL。返回hostent结构体类型指针struct hostent{char *h_name; char **h_aliases;int h_addrtype;int h_length;char **h_addr_list;#define h_addr h_addr_list[0]};hostent-h_name表示的是主机的规范名。例如www.google.com的规范名其实是www.l.google.com。hostent-h_aliases表示的是主机的别名.www.google.com就是google他自己的别名。有的时候有的主机可能有好几个别名这些其实都是为了易于用户记忆而为自己的网站多取的名字。hostent-h_addrtype 表示的是主机ip地址的类型到底是ipv4(AF_INET)还是pv6(AF_INET6)hostent-h_length 表示的是主机ip地址的长度hostent-h_addr_lisst表示的是主机的ip地址注意这个是以网络字节序存储的。千万不要直接用printf带%s参数来打这个东西会有问题的哇。所以到真正需要打印出这个IP的话需要调用inet_ntop()。const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) 这个函数是将类型为af的网络地址结构src转换成主机序的字符串形式存放在长度为cnt的字符串中。返回指向dst的一个指针。如果函数调用错误返回值是NULL。1 #include netdb.h 2 #include sys/socket.h 3 #include stdio.h 4 5 int main(int argc, char **argv) 6 { 7 char *ptr, **pptr; 8 struct hostent *hptr; 9 char str[32]; 10 ptr argv[1]; 11 12 if((hptr gethostbyname(ptr)) NULL) 13 { 14 printf( gethostbyname error for host:%s\n, ptr); 15 return 0; 16 } 17 18 printf(official hostname:%s\n,hptr-h_name); 19 for(pptr hptr-h_aliases; *pptr ! NULL; pptr) 20 printf( alias:%s\n,*pptr); 21 22 switch(hptr-h_addrtype) 23 { 24 case AF_INET: 25 case AF_INET6: 26 pptrhptr-h_addr_list; 27 for(; *pptr!NULL; pptr) 28 printf( address:%s\n, 29 inet_ntop(hptr-h_addrtype, *pptr, str, sizeof(str))); 30 printf( first address: %s\n, 31 inet_ntop(hptr-h_addrtype, hptr-h_addr, str, sizeof(str))); 32 break; 33 default: 34 printf(unknown address type\n); 35 break; 36 } 37 38 return 0; 39 } 编译运行 ----------------------------- # gcc test.c # ./a.out www.baidu.com official hostname:www.a.shifen.com alias:www.baidu.com address:121.14.88.11 address:121.14.89.11 first address: 121.14.88.11