相关疑难解决方法(0)

有什么方法可以发现您网络上的Android设备?

我希望能够在我的网络上发现Android设备,并可能检索有关它们的一些设备信息.Apple设备使用Bonjour服务非常容易.但是,我似乎无法在Android上运行任何类似的服务.

这必须在不修改Android设备,安装某些服务或打开某个端口的情况下工作.这意味着以Bonjour帮助您找到香草Apple设备的方式使用vanilla Android设备.即使能够只是验证设备运行Android就足够了.


选择答案:虽然它还不是最受好评的答案,但请看看路易斯的回复.正如他所提到的,您可以使用DNS查找(使用本地DNS服务器)来发现Android设备.我发现这有100%的成功率,因为​​Android强制设备使用主机名android- _ ____.这显然很难在手机上改变,即使它是根深蒂固的.所以我认为这是一种非常准确的方法.谢谢,路易斯!

Example:
$ nslookup 192.168.1.104 192.168.1.1
Server:     192.168.1.1
Address:    192.168.1.1#53

104.1.168.192.in-addr.arpa  name = android-711c129e251f14cf.\001.
Run Code Online (Sandbox Code Playgroud)

示例代码:如果您想在Java中实现此功能(例如,在Android上运行),则无法轻松使用getHostName(),因为它使用外部DNS服务器.例如,您希望在路由器上使用本地DNS服务器.Luis在下面提到你可以修改Wifi连接的DNS服务器,但这可能会破坏其他东西.相反,我发现该dnsjava库对发送目标DNS请求非常有帮助.以下是使用该库的一些示例代码:

        String ipAddress = "104.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: …
Run Code Online (Sandbox Code Playgroud)

android service-discovery discovery

55
推荐指数
3
解决办法
5万
查看次数

Android - 在网络中查找服务器

我目前正在编写一个客户端 - 服务器应用程序,我问自己是否有更好的方法在本地网络中找到服务器,然后通过所有可用的IP地址,看看是否提供了正确的答案?

networking android network-programming

13
推荐指数
1
解决办法
8399
查看次数