【问题标题】:Can't do reverse DNS lookup on Android无法在 Android 上进行反向 DNS 查找
【发布时间】:2012-03-21 20:23:24
【问题描述】:

我有一个使用 IP 地址连接到 Wifi 网络的 Android 设备。我在我的 Linux 计算机上对该 IP 地址进行了 NS 查找,并验证了该 IP 地址是否存在相应的主机名。

我有一段 Java 代码,它在我的 Windows PC 上运行时可以很好地反向 DNS 查找(返回主机名):

String dnSuffix;
String ipAddress = "10.228.59.217";
InetAddress inetAddr;
try {
    //inetAddr = InetAddress.getLocalHost();
    inetAddr = InetAddress.getByName(ipAddress);
    //System.out.println("inetAddr = " + inetAddr);
    Log.v(LOG_TAG, "inetAddr = " + inetAddr);
    if (inetAddr != null) {
        dnSuffix = inetAddr.getHostName();
        //System.out.println("dnSuffix is " + dnSuffix);
        Log.v(LOG_TAG,"dnSuffix is " + dnSuffix); 
    }
} catch (UnknownHostException e) {
    //System.out.println("Error getting DN suffix: " + e.getMessage());
    Log.v(LOG_TAG,"Error getting DN suffix: " + e.getMessage());
}

dnSuffix 是 Windows 上预期的主机名。

但在 Android 上,它返回一个 IP 地址而不是主机名,这表明它失败了。

我拥有我认为在我的应用中需要的所有权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

我找到了这个文档:

getCanonicalHostName

公共字符串 getCanonicalHostName()

获取此 IP 地址的完全限定域名。最大努力 方法,这意味着我们可能无法返回 FQDN,具体取决于 底层系统配置。如果有安全管理员,这 方法首先使用主机名和 -1 调用其 checkConnect 方法 它的参数以查看是否允许调用代码知道 此 IP 地址的主机名,即连接到主机。如果 不允许操作,它将返回的文本表示 IP 地址。

返回:

此 IP 地址的完全限定域名,或者如果 安全检查不允许操作,文本 IP 地址的表示。

自:

1.4

另见:

SecurityManager.checkConnect(java.lang.String, int)

我也发现有人有类似的问题:

getCanonicalHostName returns an IP address

但没有分辨率。

任何人都可以提供任何帮助吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    我真的不确定它是否可以工作,遵循 2.3 来源(缩短)

    inetAddr = InetAddress.getByName(ipAddress);
    getByName(numeric) -> getAllByName/Impl(numeric) -> lookupHostByName(numeric)
    return bytesToInetAddresses(getaddrinfo(host), host)[0]
    

    host 是数字字符串,然后在结果对象上调用 getHostName() 将返回主机(IP)

    【讨论】:

      猜你喜欢
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      • 2021-07-08
      • 2019-09-30
      • 2016-09-24
      • 1970-01-01
      相关资源
      最近更新 更多