【发布时间】:2020-12-16 18:03:15
【问题描述】:
我有一个客户端 (Java) 和一个服务器 (NodeJS)。我想模拟更多的客户端使用更多的 Windows 命令行 (cmd) 相互通信。
每次客户端连接时,我都会将连接保存在一个数组中。当其中一个客户端类型“发送”时,我会通过一个循环向所有连接的客户端发送消息。但每次我这样做时,只有输入“发送”的客户端才会收到响应。一个简短的版本是这样的:
var net = require('net');
let clients = []
var server = net.createServer(function (connection) {
connection.on('data', function (data) {
clients.push(connection);
let commandArray = data.toString().split(" ");
if (commandArray[0] == "send") {
for (i = 0; i < clients.length; i++) {
console.log(clients[i].remotePort)
clients[i].write("Hello!\n")
}
}
}
}
我对多个客户的想法比对代码的任何更正更感兴趣(但如果那里确实有问题,请告诉我)。我的猜测是我需要使用更多线程,每个客户端一个,以执行此操作,否则在给定时刻只有一个可用于接收消息。我说的对吗?
【问题讨论】:
-
每个连接使用一个线程是最简单的,但也可以像过去那样完全不踩踏地做到这一点。