當按下按鈕時,我使用bufferedReader從客戶端的服務器讀取輸出,但它工作正常,但是我無法使用方法errorHandling當連接關閉 - 我在try/catch中包裝(bufferedreader對象).readLine,但它不會引發異常,out.checkError也不會在連接失敗時返回true。該程序只是完全凍結,並沒有達到最後的捕獲如果連接結束。BufferedReader在連接到套接字後不拋出異常
if(source==button) {
String back = "";
if(out.checkError()){
errorHandling("I/O Closed");
return;
}
switch(currentOp){
case(0):
out.println("R "+input.getText());
break;
case(1):
out.println("P "+input.getText());
break;
case(2):
out.println("M "+input.getText());
break;
}
try{
if((back=in.readLine())==null) throw new SocketServerException();
}
catch(Exception e){
errorHandling("I/O Closed");
return;
}
聽起來不像連接正在關閉。 –
是的,因爲我在我的電腦上手動關閉服務器。我認爲問題在於readLine()讀取直到它讀取一行,並且由於沒有任何可讀的內容,它只是掛起程序。我不知道如何解決它雖然..我嘗試與socket.isInputClosed等,但他們都返回false不管什麼 – user3657601
好nvm它不是readline的錯,同樣的情況發生時,當我嘗試用read()讀一個字符 - 它凍結。 – user3657601