3

私が使う

PrintWriter output = new PrintWriter(socket.getOutputStream(), true);

......
output.println(message);
......

println 関数は戻り値がないため、例外も発生しません。切断が切断されたことをどのように知ることができますか?

ありがとう

4

2 に答える 2

1

ここを参照してください。http://download.oracle.com/javase/6/docs/api/java/net/Socket.html

boolean isClosed() 、ソケットのクローズ状態を返します。

boolean isConnected(), ソケットの接続状態を返します。

于 2011-02-01T22:21:52.463 に答える
1

PrintWriter.checkError()エラーが発生したかどうかを呼び出すと、通知されます。どのエラーが発生したかは具体的にわかりませんが、checkError が true を返す場合は、ソケットが閉じられているか壊れていることが最も可能性の高い原因であると推測できます。

入力ストリームを取得したソケットへの参照を保持している場合は、ソケットのステータスをテストできます。

最後に、ストリームが「失敗」した時期と理由を本当に知りたい場合は、書き込みメソッド (など)OutputStreamでキャッチIOExceptionされたラッパーを作成し、未チェックの例外でラップして再スローできます。

于 2011-02-01T22:24:39.370 に答える