在不同的主机上build立套接字连接时出现'ECONNREFUSED'错误

显然,我testing了使用Node.js的简单的TCP服务器。

服务器代码和客户端代码运行良好,如果他们都在同一台机器上。

但是,似乎当我在不同的机器上运行服务器,并testing从不同的机器上的客户端连接到服务器,我得到像下面的错误。

Error: connect ECONNREFUSED at errnoException (net.js:589:11) at Object.afterConnect [as oncomplete] (net.js:580:18) 

我尝试input服务器的IP地址,或服务器的域名,但没有运气。

服务器代码如下所示(服务器以root权限运行)

 var net = require('net'); var HOST = '127.0.0.1'; var PORT = 6969; net.createServer(function(sock) { console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort); sock.on('data', function(data) { console.log('DATA ' + sock.remoteAddress + ': ' + data); sock.write('You said "' + data + '"'); }); sock.on('close', function(data) { console.log('CLOSED: ' + sock.remoteAddress +' '+ sock.remotePort); }); }).listen(PORT, HOST); console.log('Server listening on ' + HOST +':'+ PORT); 

客户端代码如下所示

 var net = require('net'); var HOST = '127.0.0.1'; //I set it to server IP address but no luck.. var PORT = 6969; var client = new net.Socket(); client.connect(PORT, HOST, function() { console.log('CONNECTED TO: ' + HOST + ':' + PORT); client.write('I am Chuck Norris!'); }); client.on('data', function(data) { console.log('DATA: ' + data); client.destroy(); }); client.on('close', function() { console.log('Connection closed'); }); 

如果我想要服务器接受来自不同机器的套接字连接,是否有任何configuration需要通过? 我是否必须运行服务器代码作为生产模式(如果有这种模式)? 或者,港口范围有限制吗?

将服务器设置为绑定到0.0.0.0,并将客户端设置为连接到服务器的正确IP地址。 如果服务器正在监听127.0.0.1,它将只接受来自本地主机的连接。