「SocketのInputStream、OutputStreamのタイムアウト値を個別に設定する方法」について、教えていただけないでしょうか。

サーバー側のソケットで、クライアントからの
受信(InputStream)は無限に待ちつづけ、
送信(OutputStream)のみタイムアウト値を設定することは可能でしょうか?
Java1.4を利用して、以下のようにSocket接続をしているのですが、
Socket#setSoTimeoutでタイムアウト値を指定すると、
データの送受信がないときにソケットが閉じられてしまいます。
入力処理は無限に待ち続け、出力処理のみタイムアウト値を設定することは可能でしょうか?

ServerSocket serverSocket = new ServerSocket(0);
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ように)、
クライアントからの受信を待ちつつ、こちらから送信できない相手は切断するといった仕組みは、
どのように実装するべきでしょうか?