gpt4 book ai didi

javascript - 为什么此 IP 地址不适用于 Node.js 客户端?

转载 作者:行者123 更新时间:2023-11-28 19:05:38 25 4
gpt4 key购买 nike

我有一个不寻常的问题。我正在运行一个简单的 Node.js 应用程序。下面的代码有效。

var app = require('http').createServer(handler);
var io = require('socket.io').listen(app);

app.listen(8000, '127.0.0.1');

但是,如果我使用 app.listen(8000, '192.168.1.4');,则没有客户端能够连接到服务器。 192.168.1.4是我本地机器的IP地址。

我注意到的一件事是,即使在本地浏览器上使用 app.listen(8000, '127.0.0.1');http://localhost:8000/有效,但是 http://192.168.1.4:8000/不起作用。

谁能告诉我我做错了什么吗?

最佳答案

行:

app.listen(8000, IP_ADDRESS);

表示监听拥有该 IP 地址的设备(以太网、wifi、环回)上的端口 8000,以建立发往该 IP 地址的连接。

因此,如果您使用127.0.0.1,则只有本地主机可以连接到它,如果您使用192.168.1.4,本地主机无法连接到它,并且只有上的计算机>192.168.1.xxx 网络可以连接到它(我假设网络掩码为 /8)。

为了允许两个网络连接,您可以监听两个 IP 地址:

var http = require('http');

var app1 = http.createServer(handler);
app1.listen(8000, '127.0.0.1');

var app2 = http.createServer(handler);
app2.listen(8000, '192.168.1.4');

或者,如果您不关心请求来自何处并希望它监听来自任何地方的数据包,则只需不要向其传递 IP 地址即可:

// listen to port 8000 on all interfaces:
app.listen(8000);

关于javascript - 为什么此 IP 地址不适用于 Node.js 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31738968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com