可能重複:
java.net.SocketException: Software caused connection abort: recv failed客戶端服務器插槽java.net.SocketException異常:軟件導致連接中止:recv的失敗
我想寫一個客戶端服務器對,其中連接整天都在運行,客戶端等待服務器發送消息。步驟如下:
- 服務器打開端口和監聽連接
- 客戶端的連接,並等待數據
- 一段時間以後(也許小時)的服務器將數據發送到客戶端
- 客戶端處理數據並返回到服務器
- 重複步驟3和4
我可以得到1-4步的工作,但如果我嘗試重複步驟3,我得到標題中的錯誤。
這是我在客戶端的方法:
private static void waitForInput(SSLSocket sslsocket) throws IOException {
do {
try {
ObjectInputStream ois = new ObjectInputStream(sslsocket.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(sslsocket.getOutputStream());
Object o = (Object) (ois.readObject());
// excluded code to process data
oos.flush();
oos.writeObject(o);
oos.reset();
}
catch(ClassNotFoundException e){
System.err.println(e.getMessage());
}
} while (true);
}
的代碼失敗四號線,圍繞它阻斷第一時間和等待,直到我得到的數據的下位,但它不工作兩次。我究竟做錯了什麼?
什麼是「第四行」?它以什麼方式失敗?你所說的只是它「不起作用」。 –
字面上代碼中的第4行上面有'ObjectInputStream ois = new ObjectInputStream(sslsocket.getInputStream());' 我得到的錯誤是標題中的錯誤 - 'java.net.SocketException:軟件導致連接中止:recv failed' – Sarah