2012-03-21 9 views
5

私はAndroidデバイスをIPアドレスでWifiネットワークに接続しています。このIPアドレスのLinuxコンピュータでNSルックアップを行い、そのIPアドレスに対応するホスト名があることを確認しました。Androidで逆DNSルックアップを実行できません

私は私のWindows PCは、(ホスト名を返します)DNSの逆引き参照の罰金を行う上で実行するJavaコードの断片がありますWindows上で予想通り

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はホスト名です。

しかし、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を返すことができない場合があります。セキュリティーマネージャーが存在する場合、この メソッドはまず、hostnameでcheckConnectメソッドを呼び出し、 という引数を呼び出して、呼び出し側コードがこのIPアドレスの ホスト名を知ることが許可されているかどうかを確認します。 。 操作が許可されていない場合は、 のIPアドレスのテキスト表現が返されます。

戻り値:

このIPアドレスの完全修飾ドメイン名、または 操作がセキュリティチェック、IPアドレスのテキスト 表現によって許可されていない場合。

以来:

1.4

関連項目:

SecurityManager.checkConnect(java.lang.Stringで、int型)

私も同様の問題を持つ人を見つけ:

getCanonicalHostName returns an IP address

しかし解決はありません。

誰でもヘルプを提供できますか?

答えて

0

私は本当にそれがすべての作品は、2の後に動作することが本当によく分かりません。3つのソース(短縮)

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

ホストは、ホストが返されたオブジェクト上のgethostname()を呼び出す数値文字列(IP)

+0

ICSコードが異なって見えています – sherpya

関連する問題