0

我正在尝试在 android 应用程序中使用 dnsjava 来查找本地 wifi 网络中设备的主机名。下面是使用的代码:

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 是我 wifi 网络上的活动设备。192.168.1.1 是路由器 IP。代码每次都达到“查找失败”。

我不确定我哪里出错了,因为我是 dnsJava 和 Networks 的新手。另一个问题是,当扫描所有 254 个 ip 时,这会产生完美的结果吗?我正在考虑在产品中使用此代码,并且需要确定这一点。

很感谢任何形式的帮助。

4

1 回答 1

0

反向名称的 PTR 记录未按您所想的顺序存储。一般来说,A.B.C.D您需要解析IP D.C.B.A.in-addr.arpa,因此您需要颠倒 IP 组件的顺序。

于 2017-08-22T17:15:33.000 回答