使用node.js读取和写入多个ip

时间:2013-03-19 22:20:40

标签: 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地址的连接,但是它似乎一遍又一遍地将登录行写入同一主机。我觉得某个地方我正在让我的溪流交叉(就像Egon说永远不会这样),但我不确定如何解决它。非阻塞node.js世界仍然很难让我思考。

1 个答案:

答案 0 :(得分:2)

您的问题是JavaScript纠结。在JavaScript中,如果在其之前没有var定义变量,则将其设置为全局变量。这发生在conn函数中的connectToServer()变量中。正在覆盖conn,并且在退出connectToServer范围后不会重置。{/ p>

尝试在以下前面添加var。

conn = net.createConnection(3083, ip);

结果

var conn = net.createConnection(3083, ip);