从IP获取主机名别名

时间:2015-04-29 11:01:26

标签: c++ ipv6 aliases

我想在C ++中获取主机名的别名列表。此输入是IP。目前我们调用gethostbyaddr(),它返回一个hostent结构。此结构有一个别名列表字段。

     struct  hostent {
        char    FAR * h_name;           /* official name of host */
        char    FAR * FAR * h_aliases;  /* alias list */
        short   h_addrtype;             /* host address type */
        short   h_length;               /* length of address */
        char    FAR * FAR * h_addr_list; /* list of addresses */
};

gethostbyaddr()API是遗留的,我们也希望支持IPv6输入。所以我们用msdn中推荐的getnameinfo()替换了gethostbyaddr()。但在此更改后,无法获取主机名的别名列表。 getnameinfo()只是将主机名作为字符串返回,并且没有返回别名列表。在这种情况下,有人可以帮助我获取别名列表吗?

1 个答案:

答案 0 :(得分:1)

我不认为这是可能的。 DNS存储:

  • 表示每个名称,一个或多个IP / IPv6地址;
  • 对于每个IP / IPv6地址,最多一个"规范"名称

因此,您可以查询与名称(getaddrinfo)关联的地址,或与地址(getaddrinfo)关联的规范名称,但无法查询该名称映射到给定地址的名称。