标签:
#include <netdb.h> struct hostent *gethostbyname(const char *name);
http://www.cnblogs.com/LubinLew/p/POSIX-DataStructure.html#struct_hostent
gethostbyname 是不可重入函数,在多线程编程时需要注意, linux中有可重入版本 gethostbyname_r,
POSIX标准里面使用getaddrinfo和getnameinfo来替换gethostbyname系列函数了,这些函数已经已经被废弃了。
#include <stdio.h> #include <netdb.h> #include <arpa/inet.h> int main(void) { int i = 0; char str[32] = {0}; struct hostent* phost = NULL; phost = gethostbyname("www.163.com"); if (NULL == phost) { return -1; } printf("---Offical name:\n\t%s\n", phost->h_name); printf("---Alias name:\n"); for (i = 0; phost->h_aliases[i]; i++) { printf("\t%s\n", phost->h_aliases[i]); } printf("---Address list:\n"); for (i = 0; phost->h_addr_list[i]; i++) { printf("\t%s\n", inet_ntop(phost->h_addrtype, phost->h_addr_list[i], str, sizeof(str))); } return 0; }
运行结果
---Offical name: 163.xdwscache.glb0.lxdns.com ---Alias name: www.163.com www.163.com.lxdns.com ---Address list: 111.202.60.48 111.202.60.47
标签:
原文地址:http://www.cnblogs.com/LubinLew/p/Linux-gethostbyname.html