2014-01-09 77 views
0

我有以下代碼:服務器套接字重新連接問題

public class StartSocket{ 
    serverSocket = new ServerSocket(listenPort); 
    while (listening) 
     { 
      new ServerThread(serverSocket.accept()).start();   
     } 

} 

ServerThread用於與客戶端進行通信。它每4秒發送一次心跳消息。當我遇到帶寬問題時,客戶端將嘗試重新建立連接。因此,ServerThread不斷被打開。這會導致服務器超載。

如何管理客戶端的重新連接嘗試?

回答

1

讓服務器識別ServerThread中的客戶端。將客戶端標識符映射到服務器線程(在服務器上)。如果具有相同標識符的客戶端連接,請關閉與該客戶端的舊服務器連接。這將保證客戶端可以真正重新連接,如果心跳因合法原因而死亡,並且服務器每個客戶端不會有多個連接。

相關問題