を使用して接続しnew Socket("unit.domain.com", 100)
、unit.domain.com
DNSレコードのAレコードに複数のIPアドレスがある場合。接続に失敗した場合、Javaはブラウザのようにリスト内の他のアドレスの1つに自動的に接続しますか?またはそれを手動で実装する必要がありますか?
2112 次
1 に答える
5
いいえ!new Socket(String, int) を介してソケットを作成すると、そのような解決になります
addr = InetAddress.getByName(hostname);
これはのショートカットです
return InetAddress.getAllByName(host)[0];
アドレス解決は Socket c-tor で実行されます。
再接続 (フェイルオーバー) が必要な場合は、InetAddress.getAllByName(host) によって返された結果を使用し、ランダム化 (またはラウンドロビンを使用) して、必要なアドレスに接続します。
編集: また、何らかの障害が発生して接続する必要がある場合は、Socket クラスの connect メソッドをタイムアウト付きで使用することをお勧めします。また、*Nix では FD がリークする可能性があるため、失敗したソケット (および特にチャネル) も必ず閉じてください。
于 2011-01-10T18:39:20.640 に答える