根据域名解析IP函数

2014/12/1015:47:32 发表评论
 
#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;
}

  • 微信扫码赞助
  • weinxin
  • 支付宝赞助
  • weinxin

发表评论

您必须才能发表评论!