静的 DNS エントリをルーターに追加し、IP アドレスを にバインドしましたbuilds-mac
。次に、Java を使用してその IP アドレスを検索しようとしました。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Testcase
{
public static void main(String[] args) throws UnknownHostException
{
System.out.println("got: " + InetAddress.getByName("builds-mac"));
}
}
これは失敗しました:
java.net.UnknownHostException: builds-mac
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
at java.net.InetAddress.getAllByName0(InetAddress.java:1246)
at java.net.InetAddress.getAllByName(InetAddress.java:1162)
at java.net.InetAddress.getAllByName(InetAddress.java:1098)
at java.net.InetAddress.getByName(InetAddress.java:1048)
builds.home.local
しかし、ホスト名を(それに応じてDNSエントリを更新して)置き換えると、操作は成功しました。
InetAddress.getByName()
にホスト名サフィックスが必要なのはなぜですか? サフィックスのないホスト名で機能させることは可能ですか?
(Windows7、64ビットでJDK 1.7.0_60を実行しています)
更新:最初は失敗しますが ( )nslookup builds-mac
常に動作しますが、VMWare で仮想マシンを起動すると動作し始めます。が機能し始めると、機能します。ping builds-mac
could not find builds-mac
ping
ping
InetAddress.getByName()
ping
ホストの検索に失敗するのはなぜnslookup
ですか?- VM を起動すると
ping
、ホストが認識されるようになるのはなぜですか? ホストがダウンしているため、ホストを見つけたが、応答が得られないのとは対照的に、ping
言うことを覚えておいてください。could not find builds-mac
後者は予想されますが、前者はそうではありません。
UPDATE2 : それで、さらに 3 つの興味深い手がかりを発見しました...
- いつでも
ping
動作しInetAddress.getByName()
ます。の場合はそうではありませんnslookup
。 - デフォルトでは、ルーターにはドメイン名が割り当てられていません。このモードでは、
nslookup
常に機能しますが、ping
機能しません。 - ルーターにドメイン名を割り当て、[1] ルックアップを実行しているコンピューターのリースを更新すると、機能し
ping
始めます。
[1] コンピューターを再起動するか実行ipconfig /renew
すると、新しいドメイン名が取得されますが、取得されipconfig /flushdns
ません。
したがって、これは元の質問に戻ります。
Windows Client Resolver (内部ping
で使用するもの) がドメイン名サフィックスを必要とするのはなぜですか? つまり、なくても機能するはずですか?