【发布时间】:2020-04-07 18:24:45
【问题描述】:
我正在运行应托管在本地服务器上的 Node 应用程序。 目前,我只发送一个明文响应。
const http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200, {ContentType: 'text/plain'});
res.end("test");
});
当我收听 localhost 时,一切正常,我可以从浏览器发送请求。
server.listen(3000, '127.0.0.1'); // works fine, on the same machine
但是,如果我尝试通过键入路由器的 IP 来侦听 LAN 网络上的端口,则会收到错误消息。
server.listen(3000, '192.168.0.1'); // causes an error
Error: listen EADDRNOTAVAIL: address not available 192.168.0.1:3
000
at Server.setupListenHandle [as _listen2] (net.js:1253:19)
at listenInCluster (net.js:1318:12)
at doListen (net.js:1451:7)
at process._tickCallback (internal/process/next_tick.js:63:1
9)
at Function.Module.runMain (internal/modules/cjs/loader.js:7
57:11)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
Emitted 'error' event at:
at emitErrorNT (net.js:1297:8)
at process._tickCallback (internal/process/next_tick.js:63:1
9)
[... lines matching original stack trace ...]
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
我已尝试使用我的公共 IP 地址进行此操作,但未成功。
有什么方法可以监听 LAN 服务器上的端口,以便我可以从网络上的任何计算机发送请求?
另外,我以后希望我的应用程序可以在任何 LAN 网络上的任何计算机上运行。如何动态添加我的主机?
【问题讨论】:
-
您尝试过 IP 0.0.0.0(将侦听所有 IP)吗? server.listen(3000, '0.0.0.0');
-
你需要设置你的服务器ip而不是你的路由器ip,然后你需要在你的路由器中打开一个端口,并从你的路由器添加一个端口转发到你的服务器。例如,如果您的服务器正在侦听端口 80,并且您的路由器中有端口 5458 正在侦听,您应该重定向到您的服务器 ip 加上它的端口,例如 (192.168.0.x:80)...
-
@DavidAgustinMelgar 我现在如何知道哪个端口在我的路由器中监听?我在哪里做重定向?我的应用程序中应该包含哪些确切代码?更清晰的解释会有所帮助。谢谢
-
你需要打开它,进入路由器设置中的端口转发,在那里你需要将路由器端口设置为机器IP,例如router:8080 => 192.168.0.4:80 8080就是一个例子。这是为了从 Internet 访问您 LAN 中的网络服务器。