在不同主机上建立套接字连接时出现"ECONNREFUSED"错误

use*_*594 8 node.js

显然,我正在测试使用Node.js的简单TCP服务器.

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

但是,似乎当我在不同的机器上运行服务器并测试从不同机器的客户端连接到服务器时,我得到如下错误.

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

我尝试输入服务器的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);
Run Code Online (Sandbox Code Playgroud)

客户端代码如下所示

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');
});
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*rtz 12

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