Используйте dnsjava для получения имени хоста с IP-адреса от 192.168.1.1 до 192.168.1.254

Я пытаюсь использовать dnsjava в приложении для Android, чтобы найти имена хостов устройств в моей локальной сети Wi-Fi. Ниже приведен код, используемый:

try
{
String ipAddress = "33.1.168.192";
String dnsblDomain = "in-addr.arpa";
Record[] records;

Lookup lookup = new Lookup(ipAddress + "." + dnsblDomain, Type.PTR);
SimpleResolver resolver = new SimpleResolver();
resolver.setAddress(InetAddress.getByName("192.168.1.1"));
lookup.setResolver(resolver);
records = lookup.run();

if(lookup.getResult() == Lookup.SUCCESSFUL)
{
    for (int i = 0; i < records.length; i++)
    {
        if(records[i] instanceof PTRRecord)
        {
            PTRRecord ptr = (PTRRecord) records[i];
            System.out.println("DNS Record: " + records[0].rdataToString());
        }
    }
} else {
    System.out.println("Failed lookup");
}

} 
catch(Exception e) 
{
System.out.println("Exception: " + e);
}

Код был взят из приведенной ниже ссылки, и он работает там для OP: есть ли способ обнаружить устройства Android в вашей сети?

192.168.1.33 - активное устройство в моей сети Wi-Fi. 192.168.1.1 - это IP-адрес маршрутизатора. Код достигает "Неудачный поиск" каждый раз.

Я не уверен, где я иду не так, как я новичок в dnsJava и сети. Дополнительный вопрос: даст ли это идеальный результат при сканировании по всем 254 ip? Я думаю об использовании этого кода в Prod и должен быть уверен в этом.

Любая помощь очень ценится.

1 ответ

Записи PTR для обратных имен хранятся не в том порядке, в котором вы думаете. В общих чертах для IP A.B.C.D вам нужно решить D.C.B.A.in-addr.arpa, так что вам нужно будет изменить порядок компонентов IP.

Другие вопросы по тегам