我怎么知道PrintWriter中套接字连接的状态

时间:2011-02-01 22:13:39

标签: java sockets outputstream printwriter

我用

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

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

由于println函数没有返回值,因此它也不会抛出任何异常。 我怎么知道断线被切断了?

由于

2 个答案:

答案 0 :(得分:1)

见这里,http://download.oracle.com/javase/6/docs/api/java/net/Socket.html

boolean isClosed(),返回套接字的关闭状态。

boolean isConnected(),返回套接字的连接状态。

答案 1 :(得分:1)

调用PrintWriter.checkError()会告诉您是否发生了任何错误。它不会明确告诉您发生了哪个错误,但如果checkError返回true,您可以推断出最有可能导致已关闭或已损坏的套接字。

如果保留对从中获取输入流的套接字的引用,则可以测试套接字的状态。

最后,如果确实想知道流“失败”的确切时间和原因,您可以为OutputStream创建一个在写入方法上捕获IOException的包装器(等)并将其重新包装在一些未经检查的异常中。