內的插座連接的狀態我用我怎麼能知道一個PrintWriter
PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
......
output.println(message);
......
由於println的函數不具有返回值,它不拋出任何異常無論是。 我怎麼知道斷線被切斷?
感謝
內的插座連接的狀態我用我怎麼能知道一個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