我想實現一個方法來檢查服務器是否仍然運行。我使用套接字在服務器和客戶端之間進行通信。我的目標是向服務器打印換行符以測試它是否仍然運行,如果它不是IOException將被拋出,並且客戶端將進入重新連接過程。客戶端無限循環
我的問題是我停止終端服務器後,我的客戶端進入無限循環打印「響應從服務器:」,當它不應該。
代碼在客戶端:
private static void readResponse() throws IOException{
String userInput;
try{
BufferedReader stdIn = new BufferedReader(new InputStreamReader(contentSocket.getInputStream()));
System.out.println("Response from server:");
while ((userInput = stdIn.readLine()) != null) {
System.out.println(userInput);
}
} catch(IOException e) {
System.err.println("Something went wrong (5)");
}
}
private static void testConenction(Socket socket) throws IOException{
try{
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("\n");
writer.flush();
writer.close();
} catch(IOException e) {
System.err.println("Something went wrong (355)");
}
}
try{
//Connection stuff
while(true){
try{
testConenction(contentSocket);
readResponse();
} catch(IOException e) {
System.err.println("Something went wrong (327)");
closeSocket(contentSocket);
System.out.println("Trying to re-establish connection");
reconnect();
}
}
從技術上講,沒有用戶輸入,它與客戶端的聯合服務器 – zeelo 2014-09-12 13:00:44
我的錯誤,我應該更清楚,檢查這個用戶輸入是否爲空: private static void readResponse()throws IOException {userIQ; – 2014-09-12 13:01:11
我明白你的意思了,但是如果userInput是空的,我應該打異常(5)。 readResponse()主要功能是檢索一個HTTP 200 – zeelo 2014-09-12 13:10:17