11

Java でソケットを作成する場合:

new Socket(host, port);

Socket コンストラクターは、返される前にhost:portへの接続を試みます。Windows では、ホストに到達できない場合、これはほとんどすぐに失敗しますが、Linux では、ソケットがタイムアウトするまでに最大 5 分かかる場合があります。

ソケットの作成を制御できる場合は、次のことができることを認識しています。

Socket s = new Socket();
s.bind(..);
s.connect(.., timeout);

しかし、私はOSに妥当なデフォルト値を使用させたいと思っています。Linux でこの設定を変更する方法はありますか?

ありがとう

4

4 に答える 4

13

欲しいと思います/proc/sys/net/ipv4/tcp_syn_retries。デフォルトは通常 5 または 6 で、約 3 分になります。

これらはシステム全体であることに注意してください。

于 2009-06-25T20:49:52.390 に答える
4

他のアプリケーションに予期せぬ影響を与える可能性があるため、OS の設定を変更しないことをお勧めします。メソッドもあなたSocket.setSoTimeout()を助けるかもしれません。

于 2009-06-25T20:56:21.053 に答える
0

これは、システムの TCP/IP デフォルト タイムアウト (デフォルトで 240 秒?) に依存することを理解しています... 1 つのオプションは、それらを微調整することですが、これは、タイムアウト値に依存する同じマシン上の他のプログラムに影響を与える可能性があります。その場合、代わりに、Java connect() 呼び出しの「タイムアウト」値を単純に下げる方が安全な場合があります。

于 2009-06-25T20:36:24.227 に答える