2011-01-10 12 views

答えて

5

いいえ! アドレス解決がソケットC-TORに行われる

return InetAddress.getAllByName(host)[0]; 

のショートカットである

addr = InetAddress.getByName(hostname); 

ような解決に新たなソケット(文字列、整数)の結果を介してソケットを作成します。

InetAddress.getAllByName(ホスト)によって返された結果を使用して再接続(フェイルオーバー)する必要がある場合は、ランダム化(またはラウンドロビンを使用)し、必要なアドレスに接続します。

編集:可能性のある障害に接続する必要がある場合は、Socketクラスのconnectメソッドとタイムアウトを使用する方がよいでしょう。 また、は、* NixでFDがリークする可能性があるため、失敗したソケット(および特にチャネル)を閉じてください。

+0

OK、それは私が尋ねる時間です。 *ニックスは何ですか? –

+0

これは "unix alike"の略で、linux/unix上のクローズソケットは2フェーズ操作であり、いくつかの欠点があるため、close()の適切な呼び出しが行われない限り、第2フェーズは完了せず、したがって、connect()が成功するかどうかに関係なく、SocketChannel(Socket)を閉じるようにしてください – bestsss

関連する問題