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 回答