2013-04-03 26 views
65

私はDNSサーバーのIPアドレスとホスト名を持っています。ホスト名のIPアドレスの解決

Javaを使用すると、IPアドレスとホスト名を使用して、そのDNSサーバーから返されたホスト名のIPアドレスを見つけるにはどうすればよいですか?

+2

'dig 'はコマンドラインにありますか? – ceejayoz

+0

Javaコードで同じことを行う方法と、DNSサーバのIPアドレスとホスト名をどこで使うべきですか? –

+0

別のクエリでは、どんな場合でもDNSサーバのIPアドレスを提供する必要がありますか、それともデフォルトで検索しようとしますか。ここでは、ホスト名またはホスト名+ dns-server IPアドレスだけを使用する必要があるかどうか、 ? –

答えて

86

InetAddressgetHostAddress()の方法を見てください。

InetAddress address = InetAddress.getByName("www.example.com"); 
System.out.println(address.getHostAddress()); 
+0

DNSのIPアドレスが10.37.221.152で、ホスト名が「www.student.com」と表示されたら、どのようにIPアドレスを見つけることができますか? –

+2

@DarkMatter: 'getHostAddress()'を要求するときに 'InetAddress'がDNS解決アドレスを取得します。私は特定の* DNSサーバーを使用するように強制することができるかどうかはわかりません。 – thegrinner

+0

プログラマーが明示的にDNSサーバーアドレスを明示的に指定することなく理想的に解決しなければなりませんか? –

8

これにはInetAddressを使用できます。あなたはこのようにそれを行うことができます

InetAddress address = InetAddress.getByName("www.yahoo.com"); 
System.out.println(address.getHostAddress()); 
System.out.println(address.getHostName()); 
22

、以下のコードを試してみてください:上記のすべてによって示唆されるように

for(InetAddress addr : InetAddress.getAllByName("stackoverflow.com")) 
    System.out.println(addr.getHostAddress()); 
4

、あなたは InetAddress.getByName("hostName")を使用することができますが、これはあなたにキャッシュされたIPを与えることができ、Javaドキュメントを読みます同様に。 hereを示唆したよう

InetAddress[] ipAddress = DNSNameService.lookupAllHostAddr("hostName"); 
+0

なんらかの理由で、この呼び出しはただのホスト名に対して肯定的な結果をもたらします。私は自分のIPにデフォルト設定していると思っていましたが、不明なホストに対しては特定のIPを与えてくれました。 – Imaskar

2

が指摘@dakshもののほか、あなたがDNS応答のキャッシュを無効にすることができますが、キャッシュを無効にするタイミングに注意してください。あなたがDNSからIPを取得したい場合 あなたが使用することができますお使いのOSやほかのDNSサーバで行われたDNSレスポンスのキャッシングは、hereとして示唆されています。これが役に立ったら

関連する問題