2012-05-11 16 views
9

私のJavaアプリケーションで、ユーザーがIPを入力するとホスト名を表示する必要があります。ホスト名が指定されていれば、ホストのIPを表示する必要があります。IPアドレスをホスト名に変換する

たとえば、ユーザが173.194.36.37のようなIPアドレスを入力した場合、アプリケーションにはgoogle.comとその逆の句が表示されます。

この操作を実行するユーティリティはありますか?

+0

あなたは、IP番号がいくつかのホスト名を持つかもしれないことを知っていますか? 127.0.0.1に* localhostとlocalhost.localdomainの両方があります。 – vidstige

+0

@vidstige逆DNSではありません。ここで、IPはちょうど1つのホスト名、いわゆる "標準的なホスト名"にマップされます。 – glglgl

+1

あなたは一意の結果を得ることができません。http://aruljohn.com/ip2hostname.htmlを参照してください173.194.36.37 bom04s02-in-f5.1e100.netを参照してくださいgoogle.com! – SjB

答えて

17

あなたはJavaでコーディングされている場合は、ドメイン名の面ではInetAddress

InetAddress addr = InetAddress.getByName("173.194.36.37"); 
String host = addr.getHostName(); 
System.out.println(host); 
+4

明らかに、UnknownHostExceptionの例外処理を忘れないでください。 – ccKep

2

あなたが探しているものはDNSと呼ばれています。 This projectあなたが探しているようです。

+0

'InetAddress.getHostName()'があれば、サードパーティのライブラリを持ってくる必要はありません。 –

+2

@PhilippReichart「利用可能なユーティリティはありますか?」という質問は、オープンソースの第三者図書館ではないと思います。 –

+0

@PrakashK Simplicity。既存のメソッドを呼び出すことで、必要なものすべてを達成できるのであれば、100 *クラス以上の*を導入するのはなぜですか?移動部品がずっと少なく、間違ってしまうことも少なくありません。 –

0

を使用してみてください、ないユーティリティであり組み込まれている、いません。 InetAddressgetCanonicalHostName()を使用してホストの名前を取得します(ただしドメイン名は取得できません)。ここでは、ドメイン名を取得するDNS Javaプロジェクトにリンクしています。接続し、Googleのサーバーのいずれかからホスト名を取得する

例のコードは以下の通りである:

public class GetHostName { 
public static void main(String[] args) throws Exception { 
    InetAddress address = InetAddress.getByAddress(new byte[]{74, 125,(byte) 227, 7}); 
    System.out.println(address.getCanonicalHostName()); 
} 
} 
2

プロジェクトSomeKittensはあなたに呼ばれ、Javaで書かれた完全なDNSサーバのように可能性があります見えますあなたが必要とする以上のものになります。 java.net.InetAddressを見てください:

java.net.InetAddress.getByName("example.com").getHostAddress(); 
+0

Google.comの場合、このコードでは「74.125.237.100」という結果が得られます。 – Jon

+0

これは間違いありません。 http://74.125.237.100/に行くと、私はgoogle.comになります。 – Brian

+0

いいえ.OPはIPアドレスを与えられたドメイン名を与える何かを求めました。上のコードは完全な逆のものです - ドメイン名が与えられたIPアドレス。 – Jon