2013-03-20 77 views
0

應該如何處理客戶端意外斷開連接。除非客戶明確聲明關閉,否則我想保持服務器運行/收聽。保持(單線程)服務器套接字在意外套接字關閉時監聽客戶端

例如,我的服務器正在偵聽,然後客戶端關閉,導致服務器的方法結束 - 我怎樣才能讓它返回到方法的開始?

serverSocket = new ServerSocket(port); 
    clientSocket = serverSocket.accept();   
    out = new PrintWriter(clientSocket.getOutputStream(), true); 
    in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));     
    BasicProtocol bp = new BasicProtocol(password); 
    out.println(bp.processInput("")); 
    String inputLine; 
    while((inputLine = in.readLine()) != null){ 
     System.out.println("Client asks: " + inputLine); 
     out.println(bp.processInput(inputLine));    
    } 

如上所述,如果發生連接復位的錯誤怎麼能等待重新連接到?

+0

見下面的例子:['典型多線程server'](http://stackoverflow.com/a/15350754/597657) – 2013-03-20 16:54:51

+0

「這會導致服務器的方法來結束」 - 如何它這樣做?你的異常處理代碼是什麼樣的? – JimmyB 2013-03-20 16:56:59

+0

@ Eng.Fouad所以你必須有多線程處理這個? – Titus 2013-03-20 17:02:32

回答

1

例如,您可以在方法中使用一個while循環,並在客戶端要關閉時更改布爾變量。作爲這樣:

boolean isRunning = true; 
while (isRunning) { 
    //Your current method - when client wants to disconnect just set isRunning = false; 
} 
相關問題