2011-02-01 145 views
3

內的插座連接的狀態我用我怎麼能知道一個PrintWriter

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

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

由於println的函數不具有返回值,它不拋出任何異常無論是。 我怎麼知道斷線被切斷?

感謝

回答

1

調用PrintWriter.checkError()會告訴你是否有錯誤發生。它不會明確告訴你發生了哪個錯誤,但是如果checkError返回true,那麼可以推斷出最可能的原因是一個封閉或斷開的套接字。

如果您保留對來自輸入流的套接字的引用,則可以測試套接字的狀態。

最後,如果你真的想知道什麼時候,爲什麼流「失敗」,您可以爲OutputStream的包裝,引起了對寫方法(等)IOException和rethrew它包裹在一些未經檢查的異常。

1

看到這裏,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

相關問題