java - 允许一定数量的用户连接到服务器 [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();}
剩下的唯一一件事是它没有向客户端发送消息(“连接不成功,已连接最多玩家”)它只是断开连接。如何将消息发送给客户端?
解决方案
拒绝玩家时,您似乎打开了套接字。
逻辑应该是:
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
每次发送消息时都创建一个新消息是个坏主意。
推荐阅读
- html - 为什么在我使用正确的边框语法后我的边框顶部颜色没有显示
- javascript - 将对象数组从 Ajax 函数传递到 Web 服务
- assembly - 设置寄存器的 LSB(最低有效位)2 位是什么意思?
- python - OpenAI 基线中的 LazyFrames 如何节省内存?
- typescript - 量角器/打字稿(es6):语法错误:无法在模块外使用导入语句
- reactjs - 使用带有反应本机 Web 的 ui 库
- javascript - 我如何从书路中解决问题以在第 78 页做出反应?对于表格组件中的一种方法,我一直在取消定义
- php - 如何让 chrome 浏览器在移动设备上显示 HTML 输入字段选择的文件以及它的扩展名
- javascript - 需要使这个对象数组在 javaScript 中可重用
- javascript - 如何在抓取网页时从 var 股票中获取这些数字?