13

注:同様の問題を抱えている人は他にもいますが、サーバーがリッスンする方法に関連するコードの小さな情報を修正することで解決されました(私が見た例では、引数として「127.0.0.1」をhttp.createServer(...).listen(). 、同じ問題はありません。

同じ LAN ネットワーク上の別のマシンから node.js サーバーに接続しようとすると、Chrome は接続できないと言います。

これはtesttesttest.jsです

var http = require('http');

http.createServer(function(req,res) {
    res.writeHead(200,{'Content-Type': 'text/plain'});
    res.end('Working');
}).listen(3000);

192.168.1.73:3000(もちろん、192.168.1.73はサーバーを実行しているマシンのIPです)をブラウザ(Chrome、他のブラウザも試しましたが、同様の問題があります)に入力しようとすると、他のマシンの、「おっと! Google Chrome は 192.168.1.73:3000 に接続できませんでした」というエラーが表示されます。ローカル マシンに同じアドレスを入力すると、問題なく動作します。

どうすればいいのかよくわかりません。正直なところ、これが私の愚かな間違い (時間を無駄にして申し訳ありません) であり、ルーターにアクセスする必要があるものではないことを願っています。

助けてくれてありがとう。

4

11 に答える 11

34

これを変更してみてください

.listen(3000);

これに

.listen(3000, "0.0.0.0");
于 2013-03-19T06:39:35.237 に答える
15

他の誰かを救う場合に備えて、これをここに置いてください。電話をローカルマシンに接続しようとしたときに、丸2日間この問題が発生しました...電話のwifiがオフになっているためです。

于 2015-07-04T12:38:58.673 に答える
4

リモート マシンからアクセスできるように、3000 ポートを開く必要があります。iptables ファイルでそれを行うことができます。以下のコマンドを使用してファイルを開きます

vi /etc/sysconfig/iptables

そのファイルの拒否行の前に以下の行を追加します

-A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT

以下のコマンドを使用して iptables サービスを再起動します。

service iptables restart

ここで、サーバーを再起動して再試行します。それはうまくいくはずです..

于 2015-06-01T12:53:37.833 に答える
3

以下は、私が従ったステップです。

私のサーバーコード

var http=require('http');
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/plain'});
response.end('Im Node.js.!\n');
console.log('Handled request');
}).listen(8080, "0.0.0.0");;
console.log('Server running a http://localhost:8080/');

インバウンド ルールを追加しました。

  1. UDP インバウンド ルールを作成しました (http プロトコルが見つからなかったため)。
  2. 作成したら、作成したルールのプロパティに移動します。
  3. [プロトコルとプロパティ] タブを選択します。
  4. Port Type で any を選択します。[適用] をクリックして [OK] をクリックします。今、私はそれが働いた他のマシンから試しました!!!

機能させるには、Port Type を any に設定する必要があると思います。

ありがとう

于 2014-12-15T13:18:25.580 に答える
2

ファイアウォールの設定により、ポート 3000 で着信要求がブロックされる可能性があります。このポートへのアクセスを許可するために、このポートにファイアウォールの着信規則を追加することをお勧めします。

于 2013-03-19T08:30:38.767 に答える
0

端末でそれを実行する必要があります:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

説明はこちら

于 2015-02-19T21:51:07.370 に答える
0

Umamaheswaran が回答したように、新しいインバウンド ルールを作成する必要があります。しかし、UDP プロトコルを使用する代わりに、TCP を使用する必要があります。私のアプリケーションは Windows Server 2012 で実行されます。インバウンド ルールは、 [管理ツール]の下の[セキュリティが強化された Windows ファイアウォール] で設定されます。

于 2016-09-28T07:15:36.967 に答える