//name:gethostbyname.c
//NOTE: h_addr_list[] conversion
#include<netdb.h>
#include<stdio.h>
#include<arpa/inet.h>
#include<sys/socket.h>
#include<netinet/in.h>
int main(int argc,char **argv)
{
struct hostent *hp;
int x,x2;
if(argc<2)
{
printf("usage:%s hostname/n",argv[0]);
exit(1);
}
for(x=1;x<argc;x++)
{
hp=gethostbyname(argv[x]);
if(!hp)
{
printf("%s:%s",hstrerror(h_errno),argv[x]);
continue;
}
printf("HOST:%s/n",argv[x]);
printf("official name:%s/n",hp->h_name);
printf("alias:/n");
for(x2=0;hp->h_aliases[x2];x2++)
printf("%s/n",hp->h_aliases[x2]);
printf("host address type:%s/n",hp->h_addrtype==AF_INET?"AF_INET":"AF_INET6");
printf("list of addresses:/n");
for(x2=0;hp->h_addr_list[x2];x2++)
printf("%s/n",inet_ntoa(*(struct in_addr*)hp->h_addr_list[x2]));
putchar('/n');
putchar('/n');
}
return 0;
}