2011-10-31 9 views
8

明らかに、Node.jsを使用する単純なTCPサーバーをテストしています。ソケット接続が別のホストに確立されているときに「ECONNREFUSED」エラーが発生する

の両方が同じマシンにある場合、サーバーコードとクライアントコードはうまく機能します。

しかし、別のマシンでサーバーを実行して、別のマシンのクライアントからサーバーに接続するためにテストすると、次のようなエラーが表示されるようです。

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

サーバーの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'); 
}); 

以下のように私がする必要がある任意の構成がありますされますサーバが別のマシンからのソケット接続を受け入れるようにしたいのですか?サーバーコードをプロダクションモードで実行する必要がありますか(そのようなモードがある場合)?または、ポート範囲に制限がありますか?

答えて

12

0.0.0.0にバインドするようにサーバーを設定し、サーバーの正しいIPアドレスに接続するようにクライアントを設定します。サーバーが127.0.0.1でリッスンしている場合、サーバーはローカルホストからの接続のみを受け入れます。

+0

ありがとうございます! – user482594

関連する問題