#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; }