我怎么能知道一个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(),返回套接字的连接状态。
这些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