我怎么能知道一个PrintWriter

我怎么能知道一个PrintWriter

问题描述:

内的插座连接的状态我用我怎么能知道一个PrintWriter

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

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

由于println的函数不具有返回值,它不抛出任何异常无论是。 我怎么知道断线被切断?

感谢

调用PrintWriter.checkError()会告诉你是否有错误发生。它不会明确告诉你发生了哪个错误,但是如果checkError返回true,那么可以推断出最可能的原因是一个封闭或断开的套接字。

如果您保留对来自输入流的套接字的引用,则可以测试套接字的状态。

最后,如果你真的想知道什么时候,为什么流“失败”,您可以为OutputStream的包装,引起了对写方法(等)IOException和rethrew它包裹在一些未经检查的异常。

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

布尔isClosed()返回套接字的关闭状态。

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

+3

这些API调用具有误导性,不能用于检测您目前是否真正连接,请参阅此处的代码http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk /6-b14/java/net/Socket.java – jtruelove 2015-02-10 17:11:12