当前位置: 首页 > 知识库问答 >
问题:

getnameinfo()可用于为单个IP地址返回多个主机名

谯嘉木
2023-03-14

我有一个ip地址5.5.5.5,有两个主机名指向它。

从命令行

主机5.5.5-5

DNS.in-addr。arpa域名指针address1.test.com。

域名指针address2.test.com。

nslookup5.5.5.5

服务器:dns.test.com

地址:dns.test.com

非权威答案:

DNS.in-addr.arpa名称=address1.test.com.

DNS.in-addr.arpa name = address2.test.com.

我正在尝试在c / c中引入此类型功能。当我使用getnameinfo()时,它只返回 address1.test.com 或 address2.test.com。

我的问题是能在一次呼叫中获得这两个DNS名称吗?nslookup和host是如何做到这一点的?

代码:

    char host[1024];
    std::string inputAddress = "5.5.5.5";
    struct sockaddr_in socketAddress;
    socketAddress.sin_family = AF_INET;
    inet_pton(AF_INET, inputAddress.c_str(), &(socketAddress.sin_addr));
    getnameinfo((struct sockaddr *)&socketAddress, sizeof(socketAddress), host, 1024, NULL, NULL, 0);
    printf("host=%s \n", host);

共有1个答案

杨学真
2023-03-14

否。<code>getnameinfo()</code>接口只能返回一个名称-它无法返回多个结果。当返回多个PTR记录时,其行为未定义;实际上,大多数实现可能会使用他们看到的第一个。

请记住,对于任何给定的IP,应该只有一个PTR记录(因此,只有一个规范的主机名)。虽然可以将多个A/AAAA名称解析为一个IP,但是在PTR记录中应该只出现其中一个名称。

 类似资料:
  • 如何使用库存文件中的主机名和IP地址的值? 例如,我在文件中只有一个主机,名称为 FQDN,但这是在 DNS 服务器上注册的。 我尝试了一些变量,但总是得到主机名。但是,需要他们两个:( My test.yml file: 输出是:

  • 系统需求 就像它的名字"基于IP"所暗示的那样,这样的服务器中每个基于IP的虚拟主机必须拥有不同的IP地址。可以通过配备多个真实的物理网络接口来达到这一要求,也可以使用几乎所有流行的操作系统都支持的虚拟界面来达到这一要求(详情请参见您的系统文档,这种功能一般被称作"IP别名",一般用"ifconfig"命令来进行设置)。 如何配置Apache 有两种配置方法来使apache支持多主机:为每个虚拟主

  • 问题内容: 在我的java应用程序中,如果用户输入IP,我们需要显示主机名,如果给出了主机名,那么我们需要显示主机的IP。 例如,如果用户输入IP地址,则应显示应用程序,反之亦然。 有可用的工具来执行此操作吗? 问题答案: 如果您使用Java进行编码,请尝试使用

  • 问题内容: 我有DNS服务器IP地址和主机名。 使用Java,如何使用该IP地址和主机名找到该DNS服务器返回的主机名的IP地址? 问题答案: 看看和方法。

  • 问题内容: 概念阶段问题: 我有几个表( 人 , 机构 , 工厂 ),每个表有多种 地址 ( 邮件 , 物理 地址 ) 有没有一种方法可以创建一个包含 所有* 实体的所有 地址 的 单个 地址表? * 我宁愿没有 PersonAddress 和 FactoryAddress 等表集。 还有其他选择吗? 数据量最多只能是几千个地址,因此影响很小。 问题答案: 我的建议基于以下原则:一个实体(个人,机

  • 问题内容: 我的主机文件(C:\ WINDOWS \ system32 \ drivers \ etc \ hosts)具有一堆IP地址到主机名的映射: 我正在尝试找到一种通过Java API以编程方式从IPAddress转换为HostName的方法。 伪代码: 问题答案: 我从这里尝试了代码,它可以工作。即: