尝试在 Android 中使用反向 dns 获取网络设备名称

Trying to get network device names with reverse dns in Android

我可以使用 inetaddress class 获取局域网中所有设备的 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 地址(不是设备名称作为字符串)

有机会成功吗?

此致, Onder.

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

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

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

我只是通过获取 MACID 并匹配属于制造商的前 3 位数字来做到这一点。

https://macvendors.com/本站还提供api(Post/GET)解析MAC地址。

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