質問: new BufferedOutputStream(socket.getOutputStream()); ``` 追伸: ウェブサーバーのように(HTTP1.1のKeep-Aliveように)、 クライアントからの受信を待ちつつ、こちらから送信できない相手は切断するといった仕組みは、 どのように実装するべきでしょうか?
回答: 返信ありがとうございます。 私が携わっている環境は、組み込み機器のためJava1.4ベースです。 ブラウザ(主にChrome)と通信するHTML5のWebSocketサーバーを設計したく、質問させていただきました。 私の携わっている環境で、タイムアウト値を設定しない場合、 outputStream.write(something);は、 初回の送受信が成功したあとにネットワークケーブルを抜いたとき、 IOExceptionは発火されず未応答状態になるようです。 setKeepAlive()調べてみました、私には難しかったです。 Java1.4で、TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT, tcp_keepalive_timeなども設定できるかを調べてみます。 (無通信時間がデフォルト2時間は、私の環境では長すぎます。) 可能だと分かった場合はsetKeepAliveを利用し、 不可なら独自にタイムアウト監視処理(タイムアウトを検知したらshutdownOutputメソッドをコール)を用意せざるを得ないのかなという方針で進めていくべきかなと思いました。 ありがとうございました。