javascript - 使用 Node.js 读取和写入多个 ip

标签 javascript node.js

我已经完成了 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/

相关文章:

javascript - 在前端使用 fetch 从express.js 服务器获取响应

mysql - node-mysql res.json(rows) 返回带反斜杠的引号

javascript - JsPDF - 无法读取未定义的属性 'charAt'

javascript - "reverse"正则表达式与 JavaScript(node.js)

javascript - 匹配文本中的多个关键字(Javascript)

javascript - 复选框 - 选中取消选中功能不起作用

node.js - 使用 Google Cloud Platform 部署时出错

node.js,process.stdin,抛出新的 TypeError ('"编码“必须是有效的字符串编码”);

javascript - 如何控制跳转到页面内的书签

javascript - jquery按属性值过滤xml数据