码迷,mamicode.com
首页 > 其他好文 > 详细

Unix检索并打印一个DNS主机条目

时间:2015-07-07 00:59:28      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<stdlib.h>
#include<netdb.h>
#include<arpa/inet.h>


int main(int argc,char *argv[])
{
char **pp; /*指向字符串的指针*/
struct in_addr addr; /*存储IP地址的结构体*/
struct hostent *hostp; /*地址结构体*/

/*如果参数小于2,就报错*/
if(argc!=2) {
fprintf(stderr,"usage: %s <domain name or dotted-decimal>\n",argv[0]);
exit(0); /*正常退出程序*/
}

/*如果运行参数为一个点分十进制IP地址,则去根据它检索地址结构体;否则,根据域名检索地址结构体*/
if(inet_aton(argv[1],&addr)!=0)
hostp = gethostbyaddr((const char *)&addr ,sizeof(addr),AF_INET);
else
hostp = gethostbyname(argv[1]);

/*打印官方域名*/
printf("official hostname: %s\n",hostp->h_name);

/*打印域名的别名*/
for(pp = hostp->h_aliases;*pp!=NULL;pp++) {
printf("alias: %s\n",*pp);
}

/*打印域名的IP地址,十进制点分形式*/
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));
}

/*程序正常退出*/
exit(0);
}

这里面存在一个问题,当我连续调用两次 ./hostinfo.o google.com时,两次返回的IP结果不一样。这个是为什么呢?

Unix检索并打印一个DNS主机条目

标签:

原文地址:http://my.oschina.net/zzw922cn/blog/475421

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!