2015-12-18 60 views
2

我有一個IP地址5.5.5.5,並且有兩個主機名指向它。getnameinfo()是否可用於爲單個IP地址返回多個主機名稱

從命令行

主機5.5.5.5

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

DNS.in-addr.arpa域名指針address2.test.com。

NSLOOKUP 5.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和主機如何做到這一點?

代碼:

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); 
+0

你能通過編輯你的問題來提供你的代碼嗎? – manetsus

+0

這是C還是C++? – Michi

+0

這是C語言 – cloonacool

回答

3

號的getnameinfo()接口只能返回一個名字 - 它沒有返回多個結果的方式。當多個PTR記錄被返回時,它的行爲是不確定的;在實踐中,大多數實現可能會使用他們看到的第一個。

請記住,there should only be one PTR record (and, thus, one canonical hostname) for any given IP。儘管多個A/AAAA名稱可能解析爲單個IP,但只有其中一個名稱應出現在PTR記錄中。

+0

是的這是答案的問題是IP地址有2個PTRs在它不應該。非常感謝黃昏 – cloonacool

相關問題