「SocketのInputStream、OutputStreamのタイムアウト値を個別に設定する方法」について、教えていただけないでしょうか。
サーバー側のソケットで、クライアントからの
受信(InputStream)は無限に待ちつづけ、
送信(OutputStream)のみタイムアウト値を設定することは可能でしょうか?
Java1.4を利用して、以下のようにSocket接続をしているのですが、Socket#setSoTimeoutでタイムアウト値を指定すると、
データの送受信がないときにソケットが閉じられてしまいます。
入力処理は無限に待ち続け、出力処理のみタイムアウト値を設定することは可能でしょうか?
ServerSocket serverSocket = new ServerSocket(0); // portが使用中のときはBindExceptionが発生する。
Socket socket = serverSocket.accept(); // ブロッキングされる(クライアントからの通信開始要求が来るまで待機)
socket.setSoTimeout(5 * 1000); // タイムアウト値を5秒に設定
InputStream inputStream = new BufferedInputStream(socket.getInputStream());
OutputStream outputStream = new BufferedOutputStream(socket.getOutputStream());
追伸:
ウェブサーバーのように(HTTP1.1のKeep-Aliveように)、
クライアントからの受信を待ちつつ、こちらから送信できない相手は切断するといった仕組みは、
どのように実装するべきでしょうか?
よろしくお願いします。