ホスト名のIPアドレスを解決しています


85

DNSサーバーのIPアドレスとホスト名があります。

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


3
dig <hostname>コマンドラインで?
ceejayoz 2013

Javaコードで同じことを行う方法と、DNSサーバーのIPアドレスとホスト名をどこで使用する必要がありますか。
ダークマター

別のクエリでは、DNSサーバーのIPアドレスを指定する必要がありますか、それともデフォルトでそれを見つけようとしますか?ホスト名のみを使用する必要があるのか​​、ホスト名+ dnsサーバーのIPアドレスのみを使用する必要があるのか​​、ここで少し混乱していますか?
ダークマター

1
名前を使用したアドレスの検索は複雑ではありません。システムのデフォルトのリゾルバーを使用している限り。だから:あなたは本当にDNSサーバーアドレスを使用する必要がありますか?
AH

同じ質問があります:本当にDNSサーバーアドレスが必要ですか、それともデフォルトでアドレスを解決しますか?BTW私はAIXUnixサーバーを使用しています。
ダークマター

回答:


126

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

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

DNS IPアドレス10.37.221.152があり、ホスト名が「www.student.com」と言っている場合、IPアドレスを見つけるにはどうすればよいですか。
ダークマター

3
@DarkMatter:InetAddressを要求すると、DNSで解決されたアドレスを取得する必要がありますgetHostAddress()。ただし、特定のDNSサーバーを使用するように強制できるかどうかはわかりません。
thegrinner 2013

したがって、プログラマーがDNSサーバーアドレスを明示的に指定しなくても、理想的にはそれ自体で解決する必要がありますか?
ダークマター

1
@DarkMatterはい。コンピューター自体に設定されているDNSサーバーを使用していると思います。
thegrinner 2013

29

あなたはこのようにそれを行うことができます:

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

9

これにはInetAddressを使用できます。以下のコードを試してください、

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

3

上記のすべてで示唆されているように、使用することはできます InetAddress.getByName("hostName")が、これによりキャッシュされたIPが得られる可能性があります。同じJavaドキュメントをお読みください。DNSからIPを取得する場合は、次を使用できます。

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

指摘@dakshもののほか、あなたが示唆したように、DNS応答のキャッシュを無効にすることができ、ここではなくキャッシュを無効にするだけでなく、示唆されているように、あなたのOSだけでなく、他のDNSサーバによって作られたDNS応答のキャッシングのタイミングに注意してくださいここに。これがお役に立て
ば幸いです

何らかの理由で、この呼び出しは、任意のホスト名に対して肯定的な結果をもたらします。デフォルトでは自分のIPに設定されていると思いましたが、いいえ、不明なホストに対して特定のIPが提供されます。
Imaskar 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.