В настоящее время я работаю над «списком, что происходит в локальной сети», и теперь я застрял в «gimme hostname для этого IP».C++ обратный поиск dns (в локальной сети)
Я уже пытался 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», это было бы здорово ...
Можете ли вы показать, как вы устанавливаете адрес, используемый в качестве аргумента, для 'gethostbyaddr()'? Вы понимаете, что этот «ANantes-651-1-49-net.w2-0.abo.wanadoo.fr» разрешает 2.0.0.0 и наоборот, не так ли? Таким образом, есть вероятность, что ваши аргументы могут быть ошибочными. – Paulo1205
'... sockaddr_in адрес; memset (& address, 0, sizeof (адрес)); address.sin_family = AF_INET; address.sin_addr.s_addr = inet_addr ("192.168.178.1"); struct hostent * h = gethostbyaddr ((const void *) & address, sizeof (адрес), AF_INET); ... ' – user3128045
Dang ... Как использовать перерывы в комментариях? И yep, я проверил «имя хоста» с помощью «dig» и увидел этот странный «2.0.0.0» ... – user3128045