Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C getnameinfo()可以用于返回单个IP地址的多个主机名吗_C_Sockets_Dns_Network Programming_Hostname - Fatal编程技术网

C getnameinfo()可以用于返回单个IP地址的多个主机名吗

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++中实现

我有一个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是如何做到这一点的

代码:

    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,不应该出现。多谢你了