我正在尝试在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和网络的新手。 另一个问题是,当扫描所有254个IP时,这会产生完美的结果吗?我正在考虑在 prod 中使用此代码,需要确定这一点.
任何帮助都非常感谢。
反向名称的 PTR 记录不会按您思考的顺序存储。一般来说,对于 IPA.B.C.D
,您需要解析D.C.B.A.in-addr.arpa
,因此您需要颠倒 IP 组件的顺序。