我已经完成了 Node.js 的教程,但似乎一切都是为了从服务器端如何处理它。我正在研究它如何使用非阻塞 I/O 向网络上的多个设备写入数据。这是我到目前为止所得到的(粗略的代码,抱歉):
var net = require('net');
var nodes = [<list of IP addresses>];
function connectToServer(ip) {
conn = net.createConnection(3083, ip);
console.log ("Creating connection to: " + ip + "\n");
conn.on('connect', function() {
conn.write ("act-user::myuser:ex1::mypass;");
});
conn.on('data', function(data) {
var read = data.toString();
if (read.match('ex1'))
{
console.log(ip + ": " + read);
}
});
conn.on('end', function() {
});
}
nodes.forEach(function(node) {
connectToServer(node);
});
我看到它遍历列表并启动到每个 IP 地址的连接,但随后它似乎一遍又一遍地将登录行写入同一主机。我认为在某个地方我的流交叉了(就像埃贡说永远不会这样做),但我不知道如何解决它。非阻塞的 Node.js 世界对我来说仍然有点难以思考。
最佳答案
您的问题是 JavaScript 问题。在 JavaScript 中,如果定义变量时前面没有 var
,则该变量将被设置为全局变量。 connectToServer()
函数中的 conn
变量发生这种情况。 conn
正在被覆盖,并且在退出 connectToServer
作用域后不会重置。
尝试在以下内容前面添加 var。
conn = net.createConnection(3083, ip);
结果
var conn = net.createConnection(3083, ip);
关于javascript - 使用 Node.js 读取和写入多个 ip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15511631/