私は自分でSocketを学ぼうとしています。オラクルのウェブサイトからのテキストをフォローすることで少し混乱しています。それに関していくつか質問があります。明確な説明を事前に感謝します。
setSoTimeout
public void setSoTimeout(int timeout)はSocketExceptionをスローします
指定されたタイムアウト(ミリ秒単位)でSO_TIMEOUTを有効/無効にします。このオプションをゼロ以外のタイムアウトに設定すると、このソケットに関連付けられた
read()
呼び出しは、InputStream
この時間だけブロックされます。タイムアウトが経過するjava.net.SocketTimeoutException
と、ソケットはまだ有効ですが、aが発生します。このオプションを有効にするには、ブロック操作を開始する前に有効にする必要があります。タイムアウトは0より大きい必要があります。ゼロのタイムアウトは無限のタイムアウトとして解釈されます。
- SO_TIMEOUTとは何ですか?
ソケットは接続のエンドポイントです。私が言うなら
mySocket.setSoTimeout(2000);
これは、このソケットのサーバー/クライアントからの入力の読み取りを2000ミリ秒ブロックし、この時間の後、ソケットがデータを読み取る準備ができていることを意味しますか?
タイムアウトが期限切れになるとはどういう意味ですか?
操作をブロックする前に有効にする必要があるオプションは何ですか?
無限タイムアウトは、ソケットがもう読み取らないことを意味しますか?