获取与IP地址相关的主机名别名

4

我希望能在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个回答

1
我认为这是不可能的。DNS存储了以下内容:
  • 每个名称对应一个或多个IP / IPv6地址;
  • 对于每个IP / IPv6地址,最多有一个“规范”名称。
因此,您可以查询与名称相关联的地址(getaddrinfo),或查询与地址关联的规范名称(getnameinfo),但没有办法查询映射到给定地址的名称集合。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接