#include <stdio.h>
#include <netdb.h>
#include <sys/time.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
char * get_serv_ip(const char *hostname, char ip_str[][17], int ip_num, int max_num)
{
struct hostent *hptr;
int h_errno;
struct timeval before,after;
double use_time;
char **alias;
int i = 0;
bzero(&before,sizeof(before));
bzero(&after,sizeof(after));
gettimeofday(&before,NULL);
if ( (hptr=gethostbyname(hostname))==NULL)
{
printf("gethostbyname error for host:%s :%s",hostname,hstrerror(h_errno));
fprintf(stderr,"gethostbyname error for host:%s :%s",hostname,hstrerror(h_errno));
return NULL;
}
printf("serv_hostname after get_serv_ip is : %s\n",hostname);
gettimeofday(&after,NULL);
use_time = (double)(after.tv_sec * 1000000 + after.tv_usec) - (before.tv_sec * 1000000 + before.tv_usec);
use_time = use_time / 1000000;
for(alias=hptr->h_addr_list;*alias!=NULL;alias++,i++)
{
if(i + 1 > ip_num || i + 1 > max_num)
break;
inet_ntop(hptr->h_addrtype,hptr->h_addr_list[i],ip_str[i],INET_ADDRSTRLEN);
printf("dst:%s\n", ip_str[i]);
}
printf("Used time:[%lf] seconds\n",use_time);
return ip_str[i-1];
}
int main(int argc, char *argv[])
{
char ip_str[10][17];
get_serv_ip(argv[1],ip_str, 2, 10);
return 0;
}