2011-10-31 29 views
8

Aparentemente, estoy probando un servidor TCP simple que usa Node.js.Obteniendo el error 'ECONNREFUSED' cuando la conexión del socket se establece en un host diferente

El código del servidor y el código del cliente funcionan bien si son ambos en la misma máquina.

Sin embargo, parece que cuando ejecuto el servidor en la máquina diferente y pruebo para conectarme al servidor desde el cliente en una máquina diferente, obtengo el error siguiente.

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

He intentado escribiendo la dirección IP del servidor, o el nombre de dominio del servidor, pero no tuve suerte.

El código del servidor es como el de abajo, (servidor se corrió con privilegios de 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); 

y el código de cliente es como abajo

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'); 
}); 

¿Hay alguna configuración que tengo que seguir, si quiero que el servidor acepte conexiones de socket desde una máquina diferente? ¿Tengo que ejecutar el código del servidor como modo de producción (si hay tal modo)? O bien, ¿hay alguna limitación en el alcance del puerto?

Respuesta

12

Configure el servidor para que se enlace a 0.0.0.0 y configure el cliente para que se conecte a la dirección IP correcta del servidor. Si el servidor está escuchando en 127.0.0.1, solo aceptará conexiones desde su host local.

+0

¡Muchas gracias! – user482594

Cuestiones relacionadas