我用
PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
......
output.println(message);
......
由于println函数没有返回值,因此它也不会抛出任何异常。 我怎么知道断线被切断了?
由于
答案 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
的包装器(等)并将其重新包装在一些未经检查的异常中。