使用dnsjava从ip地址获取主机名,从192.168.1.1到192.168.1.254

时间:2017-08-22 17:11:20

标签: java android networking dnsjava

我正在尝试在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工作: any way to discover Android devices on your network?

192.168.1.33是我的wifi网络上的有源设备。 192.168.1.1是路由器IP。代码到达&#34;失败的查找&#34;每次 。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

反向名称的PTR记录不会按您所考虑的顺序存储。对于IP A.B.C.D的一般术语,您需要解决D.C.B.A.in-addr.arpa,因此您需要撤消IP组件的顺序。