#include<stdio.h>
#include<errno.h>
#include<netdb.h>
int main(int argc,char *argv[])
{
char **pp;
struct in_addr addr;
struct hostent *hostp;
if(argc != 2)
{
fprintf(stderr,"usage:%s <domain name or dotted-decimal>\n",argv[0]);
exit(0);
}
if(inet_aton(argv[1],&addr) != 0)
{//通过ip来获取主机名
hostp = gethostbyaddr((const char *)&addr, sizeof addr,AF_INET);
}
else
{//通过域名获取主机名
hostp = gethostbyname(argv[1]);
}
printf("hostname=%s line=%d\n",hostp->h_name,__LINE__);
for(pp = hostp->h_aliases; *pp != NULL;pp++)
{
printf("alias: %s\n",*pp);
}
for(pp = hostp->h_addr_list;*pp != NULL;pp++)
{
addr.s_addr = ((struct in_addr *)*pp)->s_addr;
printf("address:%s\n",inet_ntoa(addr));
}
return 0;
}
host entry structure