当前位置: 技术问答>linux和unix
关于gethostbyname的一个疑问
来源: 互联网 发布时间:2017-02-14
本文导语: 为什么用这个函数得到的 ip有时候不对 比如用 www.sina.com 就不对。。。显示中搜公司还有 用 baidu.com 和www.baidu.com也不一样 后者是北京市 百度蜘蛛 前者是百度公司 (我每次都是 用 ip网站查的,来进行...
为什么用这个函数得到的 ip有时候不对 比如用 www.sina.com 就不对。。。显示中搜公司还有 用 baidu.com 和www.baidu.com也不一样 后者是北京市 百度蜘蛛 前者是百度公司
(我每次都是 用 ip网站查的,来进行比对)
具体代码如下
#include
#include
#include
int main(int argc,char ** argv)
{
struct hostent * phost;
char *hostname=argv[1];
char *h_name;
char **aliases;
char ** ip_addr;
int iptype;
char str[32];
int counter=1;
if((phost=gethostbyname(hostname))==NULL){ //get pointer of host
printf("no such name n");
}
printf("standard name------>%snn",phost->h_name);//official name
for(aliases=phost->h_aliases;*aliases!=NULL;aliases++)
{
printf("its aliases name---->%snn",*aliases); // alaises
}
if(phost->h_addrtype==AF_INET) // type of ip
{
printf("IPTYPE-------> IPV4nn");
}
else if(phost->h_addrtype==AF_INET6)
{
printf("IPTYPE-------> IPV6nn");
}
printf("the address lenght--->%dnn",phost->h_length); //length of ip
ip_addr=phost->h_addr_list; //ip address
while( *ip_addr!=NULL)
{
printf("the %d th address ----->%snn",counter,inet_ntop(phost->h_addrtype,*ip_addr,str,sizeof(str)));
counter++;
ip_addr++;
}
}
(我每次都是 用 ip网站查的,来进行比对)
具体代码如下
#include
#include
#include
int main(int argc,char ** argv)
{
struct hostent * phost;
char *hostname=argv[1];
char *h_name;
char **aliases;
char ** ip_addr;
int iptype;
char str[32];
int counter=1;
if((phost=gethostbyname(hostname))==NULL){ //get pointer of host
printf("no such name n");
}
printf("standard name------>%snn",phost->h_name);//official name
for(aliases=phost->h_aliases;*aliases!=NULL;aliases++)
{
printf("its aliases name---->%snn",*aliases); // alaises
}
if(phost->h_addrtype==AF_INET) // type of ip
{
printf("IPTYPE-------> IPV4nn");
}
else if(phost->h_addrtype==AF_INET6)
{
printf("IPTYPE-------> IPV6nn");
}
printf("the address lenght--->%dnn",phost->h_length); //length of ip
ip_addr=phost->h_addr_list; //ip address
while( *ip_addr!=NULL)
{
printf("the %d th address ----->%snn",counter,inet_ntop(phost->h_addrtype,*ip_addr,str,sizeof(str)));
counter++;
ip_addr++;
}
}
|
#define DEF_SERV_NAME "domain"
#define DEF_SERV_PROTO "udp"
#define DEF_SERV_PORT 53
int main(int argc, char *argv[])
{
unsigned char ans[ANS_LEN];
int len, i;
ns_msg ns;
ns_rr rr;
in_addr in;
struct servent *se;
if (argc s_port ?: htons(DEF_SERV_PORT);
if (strcasecmp(se->s_proto, DEF_SERV_PROTO))
{
_res.options |= RES_USEVC;//使用TCP而非UDP协议
}
}
if ((len = res_query(argv[1], ns_c_in, ns_t_a, ans, ANS_LEN))