【问题标题】:Trying to get network device names with reverse dns in Android尝试在 Android 中使用反向 dns 获取网络设备名称
【发布时间】:2017-01-29 09:51:42
【问题描述】:

我可以使用 inetaddress 类获取局域网中的所有设备 IP 地址。我需要做的是反向查找 ip 地址并在网络中查找设备名称,例如:“Jimmie's Macbook”

我的代码块可以获取本地网络范围内的所有 IP 地址:

        private ArrayList<String> scanSubNet(String subnet) {
            ArrayList<String> hosts = new ArrayList<>();
            InetAddress inetAddress;

            for (int i = 1; i <= 255; i++) {
                try {
                    inetAddress = InetAddress.getByName(subnet + String.valueOf(i));

                    if (inetAddress.isReachable(1000)) {
                        hosts.add(inetAddress.getHostName());
                        Log.d(TAG, InetAddress.getByAddress(inetAddress.getAddress()).getHostAddress());
                        Log.d(TAG, InetAddress.getByAddress(inetAddress.getAddress()).getCanonicalHostName());
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }

            return hosts;
        }

我将我的方法称为;

ArrayList<String> subnetList = scanSubNet("192.168.1.");ArrayList<String> subnetList = scanSubNet("192.168.1.");

在 Log.d 中(TAG,我正在尝试使用反向 dns 获取设备名称。但是这两行都给我输出为 ip-address(不是设备名称作为字符串)

有没有成功的机会?

问候, 上。

【问题讨论】:

    标签: android dns android-networking inetaddress


    【解决方案1】:

    我只是通过获取 MACID 并匹配属于制造商的前 3 位来完成。

    https://macvendors.com/这个网站也提供api(Post/GET)来解析MAC地址。

    您需要进行点对点握手,而不是解析 MAC 的全名。

    【讨论】:

      【解决方案2】:

      这可能是由于路由器配置错误造成的。

      在 LAN 中,没有依赖于成功的反向 DNS 查找的关键功能,因此这种错误配置很容易在很长一段时间内未被发现。

      如果没有关于您的 LAN 的更多信息,很难判断您的特定情况出了什么问题,但首先想到的是在路由器上配置正确的“DNS 后缀”。这通常在 DHCP 设置下找到。

      【讨论】:

      • 根据研究,无法直接从 LocalNetwork DNS-reverse 获取设备名称。您应该必须与点对点设备握手,例如使用 Samba 协议共享 1 个文件。
      猜你喜欢
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多