首页 > 解决方案 > 允许一定数量的用户连接到服务器 [JAVA]

问题描述

好吧,所以我把它改成了这个,我关闭了套接字并修改了循环

Socket clientSocket = serverSocket.accept();
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);
            connectedClients++;
            if (connectedClients < maxPlayers) {MortgageRunnable m = new MortgageRunnable(clientSocket);
                System.out.println("New player has connected!");
                new Thread(m).start();}
            else{out.println("Connection unsuccessful, Max players connected");clientSocket.close();}

剩下的唯一一件事是它没有向客户端发送消息(“连接不成功,已连接最多玩家”)它只是断开连接。如何将消息发送给客户端?

标签: javasocketsserver

解决方案


拒绝玩家时,您似乎打开了套接字。

逻辑应该是:

   while (true) {
       socket = accept()
       if (too many players)  {
           send "too many players" message
           close socket
       } else {
           increment player counter
           new Thread(new MortgageRunnable(socket)).start()
       }
    }

此外,当玩家离开/线程退出时,您应该减少计数器。

最后,PrintWriter每次发送消息时都创建一个新消息是个坏主意。


推荐阅读