17

java.net.InetAddressは、デフォルトでローカル マシンのデフォルトのホスト名リゾルバーを使用してホスト名を解決します。

ホスト名から IP アドレスへの解決は、ローカル マシンの構成情報と、ドメイン ネーム システム (DNS) やネットワーク情報サービス (NIS) などのネットワーク ネーム サービスを組み合わせて使用​​することによって実現されます。使用されている特定のネーム サービスは、デフォルトでローカル マシンに設定されたものです。どのホスト名でも、対応する IP アドレスが返されます。[ソース]

ローカル マシンのデフォルトのホスト名リゾルバーを変更せずに、この動作を構成するにはどうすればよいでしょうか?

たとえば、 OpenDNS ( 208.67.222.222、208.67.220.220 ) または Google Public DNS (2001:4860:4860::8888、2001:4860:4860: :8844)?

または、DNS パケット要求を明示的に作成し、それらをjava.net.DatagramSocketまたはjava.net.Socketのいずれかを介してサーバーに送信し、応答を解析する唯一のソリューションですか?

4

4 に答える 4

14

Java 9 では、この機能が削除されました。サードパーティの DNS クライアント ライブラリを使用する必要があります。

Java 8 以前を使用している場合は、次のことができます。

このサイトsun.net.spi.nameservice.nameserversで説明されているように、システム プロパティを設定できます。

于 2012-07-27T12:39:23.987 に答える