struct hostent FAR *PASCAL FAR gethostbyname(const char FAR * name);
其中,name指的是指向一个域名的指针,该函数返回的是一个hostent型的结构体。
struct hostent { char FAR * h_name; char FAR * FAR * h_aliases; short h_addrtype; short h_length; char FAR * FAR * h_addr_list; };
inet_ntoa函数将一个IP转换成一个互联网标准点分格式的字符串。
char FAR * inet_ntoa( struct in_addr in);
hostent->h_name | 指的是主机的规范名,例如www.google.com.hk的规范名其实是www-wide.l.google.com |
hostent->h_aliases | 指的是主机的别名,例如www.google.com.hk就是google他自己的别名,有时候,有的主机有好几个别名,这些其实都是为了易于用户的记忆而为自己的网站多取的名字 |
hostent->h_addrtype | 指的是主机IP地址的类型,可能是IPV4(AF_INET)或者是IPV6(AF_INET6) |
hostent->h_length | 指的是主机IP地址的长度,如果是IPV4,则是4 |
hostent->h_addr_list | 表示主机的IP地址,需要使用inet_ntoa转换成字符串格式的IP地址。IP地址可能有1——更多个。 |
char * smtpIp(char * url) { HOSTENT * iphost; char ipconfig[20];
if((iphost = gethostbyname(url)) != NULL) { int i = 0;
while(iphost->h_addr_list[i]) { char ip[20]; memcpy(&ip, inet_ntoa(*((struct in_addr *)iphost->h_addr_list[i])), 20); printf("%s", ip);
memset(ip, '\0', 20); i++; } } }