我有以下代码:
public class StartSocket{
serverSocket = new ServerSocket(listenPort);
while (listening)
{
new ServerThread(serverSocket.accept()).start();
}
}
ServerThread
用于与客户端通信。它每4秒发送一次心跳消息。当我遇到带宽问题时,客户端会尝试重新建立连接。因此ServerThread
不断被打开。这会导致服务器过载。
如何管理客户端的重新连接尝试?
答案 0 :(得分:1)
让服务器在ServerThread
中识别客户端。将服务器线程的客户端标识符映射(在服务器上)。如果具有相同标识符的客户端连接,请关闭与该客户端的旧服务器连接。如果心跳因合法原因而死,并且服务器每个客户端不会有多个连接,这将保证客户端可以真正重新连接。