当前位置:  技术问答>linux和unix

gethostbyaddr()相关

    来源: 互联网  发布时间:2016-04-21

    本文导语:  gethostbyaddr(const void *addr, int len, int type); 这个接口,查询的过程到底是怎么样的?我试了一下,www.google.cn的IP,失败,另试了一个ip :210.51.191.41却是可以调用成功的。 想问一下,这个系统调用,背后到底是怎么...

gethostbyaddr(const void *addr, int len, int type);

这个接口,查询的过程到底是怎么样的?我试了一下,www.google.cn的IP,失败,另试了一个ip :210.51.191.41却是可以调用成功的。

想问一下,这个系统调用,背后到底是怎么查询的。

|
通过DNS查询的,但是目前中国电信劫持很多域名(DNS Hijack)
从国外的网络查:
ping www.google.cn

Pinging cn.l.google.com [64.233.179.160] with 32 bytes of data:

Reply from 64.233.179.160: bytes=32 time=294ms TTL=232
Reply from 64.233.179.160: bytes=32 time=299ms TTL=232
Reply from 64.233.179.160: bytes=32 time=294ms TTL=232

从国内的网络查:
ping www.google.cn
PING cn.l.google.com (203.208.37.99): 56 data bytes
64 bytes from 203.208.37.99: icmp_seq=0 ttl=245 time=1.834 ms
64 bytes from 203.208.37.99: icmp_seq=1 ttl=245 time=1.899 ms
64 bytes from 203.208.37.99: icmp_seq=2 ttl=245 time=1.900 ms


#include 

#include 
#include 
#include 
#include 
#include 

static void
usage(void)
{
        fprintf(stderr, "usage: %sn", "gethostbyaddr addr");
        exit(1);
}

int
main(int argc, char *argv[])
{
        in_addr_t        addr;
        struct hostent  *host;
        char            **alias;

        if (argc != 2)
                usage();

        addr = inet_addr(argv[1]);
        host = gethostbyaddr(&addr, sizeof(in_addr_t), AF_INET);
        if (NULL == host) {
                herror("gethostbyaddr");
                exit(2);
        }

        (void)printf("official name of host:n");
        (void)printf("%sn", host->h_name);
        (void)printf("alias list:n");
        for (alias = host->h_aliases; *alias; alias++) {
                (void)printf("%sn", *alias);
        }

        return 0;
}

运行结果:
$ ./gethostbyaddr 203.208.37.99
gethostbyaddr: Unknown host
$ ./gethostbyaddr 64.233.179.160
official name of host:
hs-in-f160.google.com
alias list:
$ ./gethostbyaddr 210.51.191.41
official name of host:
mail.imcta.cn
alias list:

|
你配在/etc/hosts里的主机名

|
当时google不能访问? 呵呵。

我认为是通过 /etc/resolv.conf 里的DNS server去解析的把

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么用gethostbyaddr(ip,size,PF_INET)不能把机器名得到?
  • 为什么gethostbyaddr老是得到个null呢??
  • 把mini2440当客户端出错:gethostbyaddr:no such file or directory 急??
  • gethostbyaddr函数老是返回为null 但是查看errno又说成功(success) 为什么求助 深夜求帖
  • linux网络编程中gethostbyname、gethostbyaddr函数的用法
  • 关于gethostbyaddr
  • 为什么提示inet_addr,gethostbyaddr错误,头文件#include <netdb.h> #include <netinet/in.h>我已经包括,在HP机编译没有问题,现在环境


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3