写了一个批量查询域名dns查询小程序,读取文本中的域名,每行一个,输出对应IP
主要是用到了 struct hostent 结构
- struct hostent
-
{
-
char *h_name;//主机正式名称
-
char **h_aliases;//别名列表
-
int h_addtype;//主机地址类型 v4orv6
-
int h_lenth;// 地址长度
-
char **h_addr_list;//IP 地址列表
-
};
函数 gethostbyname() 可以根据主机名获取主机的信息,返回值就是指向struct hostent结构的一个指针。
- #include<unistd.h>
-
#include<stdio.h>
-
#include<netdb.h>
-
-
-
int main(int argc,char *argv[])
-
{
-
char host[128];
-
struct hostent *ht=NULL;
-
FILE *fp;
-
-
if(argc<2)
-
{
-
printf("usage: dns_search file\n");
-
exit(1);
-
}
-
-
printf("%s\n",argv[0]);
-
-
fp=fopen(argv[1],"r");
-
-
if(fp<0)
-
printf("open file error\n");
-
else
-
printf("open file sucess");
-
-
while(fscanf(fp,"%s",host)!=EOF)
-
{
-
ht=gethostbyname(host);
-
-
printf("%s\n",host);
-
-
if(ht)
-
{
-
int i=0;
-
int j=0;
-
for(i=0;;i++)
-
{
-
if(ht->h_addr_list[i] !=NULL)
-
{
-
j++;
-
}
-
else
-
break;
-
}
-
-
printf("%d\n",j);
-
for(i=0;i<=j;i++)
-
{
-
if(ht->h_addr_list[i] !=NULL)
-
{
-
printf("%s\n",inet_ntoa((unsigned int*)ht->h_addr_list[i]));
-
}
-
else
-
break;
-
}
-
-
}
-
else
-
{
-
printf("0\n");
-
}
-
}
-
-
}
阅读(2320) | 评论(0) | 转发(0) |