C++反向 DNS 查找(在本地网络上)



我目前正在开发一个"列出本地网络中发生的事情"工具,现在我被困在"为这个IP提供主机名"部分。

我已经尝试过getnameinfo和gethostbyaddr,但是第一个返回(几乎)总是给定的IP而不是主机名,第二个返回一些奇怪的东西,例如ANantes-651-1-49-net.w2-0.abo.wanadoo.fr...

我的问题是:我怎样才能做到这一点?

注意:这并不是说没有与至少一个IP关联的主机名,例如dig +short -x 192.168.178.1返回应有的fritz.box.,并且host 192.168.178.1给出正确的答案 1.178.168.192.in-addr.arpa domain name pointer fritz.box.

附加说明:在我的研究中,我偶然发现了一个名为"adns"的库,但"偶然发现"的意思是"几乎真的偶然发现",因为没有丝毫文档、示例等的痕迹......因此,如果有人真的有一个关于如何使用"adns"的例子,那就太好了......

Oook...似乎,就像我以几乎"猴子想香蕉"的方式搞砸了几件事......

第一名:

我用了这个:

...
sockaddr_in address;
memset(&address, 0, sizeof(address));
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("192.168.178.1");
struct hostent *h =gethostbyaddr((const void *)&address, sizeof(address), AF_INET);
...

而不是正确的:

...
in_addr address;
inet_aton("192.168.178.1",&address);
struct hostent *h = gethostbyaddr((const void *)&address, sizeof(address), AF_INET);
...

第2名:

我有一行检查返回的主机名是否为空以将其替换为占位符,具体取决于所选的"报告格式"(纯文本/xml/csv)。但无论出于何种原因,我以某种方式编写它,它总是用所说的占位符替换主机名(dang!这有点明显,但我没有一直看到它......

但最后:耶!它有效...

最新更新