C getnameinfo()可以用于返回单个IP地址的多个主机名吗
我有一个ip地址5.5.5.5,有两个主机名指向它 从命令行 主机5.5.5.5 DNS.in-addr.arpa域名指针地址1.test.com DNS.in-addr.arpa域名指针地址2.test.com NS5.5.5.5 服务器:dns.test.com 地址:dns.test.com 非权威性回答: DNS.in-addr.arpa name=address1.test.com DNS.in-addr.arpa name=address2.test.com 我试图在c/c++中实现这种类型的功能。当我使用getnameinfo时,它只返回address1.test.com或address2.test.com 我的问题是如何在一次呼叫中获得这两个DNS名称? nslookup和host是如何做到这一点的 代码:C getnameinfo()可以用于返回单个IP地址的多个主机名吗,c,sockets,dns,network-programming,hostname,C,Sockets,Dns,Network Programming,Hostname,我有一个ip地址5.5.5.5,有两个主机名指向它 从命令行 主机5.5.5.5 DNS.in-addr.arpa域名指针地址1.test.com DNS.in-addr.arpa域名指针地址2.test.com NS5.5.5.5 服务器:dns.test.com 地址:dns.test.com 非权威性回答: DNS.in-addr.arpa name=address1.test.com DNS.in-addr.arpa name=address2.test.com 我试图在c/c++中实现
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);
不可以。getnameinfo接口只能返回一个名称-它无法返回多个结果。当返回多个PTR记录时,其行为未定义;实际上,大多数实现可能会使用他们看到的第一个实现
记住这一点。虽然可以将多个A/AAAA名称解析为单个IP,但PTR记录中只能出现其中一个名称。您可以通过编辑问题来提供代码吗?C语言中没有std::string是的,这是答案。问题是IP地址中有两个PTR,不应该出现。多谢你了