首页 > 解决方案 > Node.js 似乎忽略了我提供的 IP 地址,而是使用 localhost 打开服务器

问题描述

我试图自己解决它,但我失败了。起初我只是想创建一个最简单的本地主机服务器,它可以工作,所以我想到了在线服务器(通过端口转发),让我的朋友检查我的代码。我想我做错了什么,所以我问你。编码:

var http = require('http');

var options = {
    hostname: '178.217.195.9',
    port: 45555
};

var server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end("working?");
});

server.listen(options, () => {
  console.log(`Server running at 178.217.195.9:45555`);
});`

来源:https ://nodejs.org/docs/v8.11.2/api/synopsis.html

我试图在最新版本(10.3.0)上运行此代码,今天我尝试使用推荐的版本(8.11.2)。没有变化,所以我想这一定是我的错。

发生了什么?当我检查(在端口转发之后)178.217.195.9:45555 时,它不存在。

但是当我检查 localhost:45555 时,它可以工作。我不知道该怎么说。

正如主题所说,这很奇怪,它似乎忽略了我输入的 IP,用 localhost 更改它。

也许代码是错误的。我听说“只需使用您的公共 IP 更改 127.0.0.1 并且应该可以工作”,所以我做到了。

此代码适用于本地主机服务器吗?

我不知道它是否会有所帮助,但通常我使用 p5.js 库(编码列车),端口转发设置为:服务端口- 45555,IP 地址- 192.168.0.103(在 cmd 中检查),内部端口- 45555,协议- TCP 或 UDP。

我为 45555 端口的防火墙添加了例外。有时,当我尝试更改代码以测试其他选项时,但概念相同,它会显示Error: listen EADDRNOTAVAIL 178.217.195.9:45555

更改端口没有帮助。然后我通常会回到 ^ 这段代码。通过控制面板,我将我的 IP 设为静态。IP 地址:192.168.0.103,默认网关:192.168.0.1,子网掩码:255.255.255.0(如果有帮助的话)。

以前(我不记得确切时间,但超过 3 个月前)我还将首选 DNS 服务器设置为:8.8.8.8 和 8.8.4.4。当前的 Node.js 版本是 8.11.2,npm 6.1.0。我真的不想使用 Heroku 或其他类似的程序。我听说过一些关于 WebSockets 的事情,有点搞砸了,但实际上什么也没发生。我对那里的有用信息没有任何其他想法。我希望有人会帮助我,我会回答有关其他信息的所有问题。

标签: javascriptnode.jsserver

解决方案


在选项中必须是host而不是hostname。因此,host选项中不存在您的代码,并且localhost默认使用该代码。

server.listen(选项[,回调])

server.listen(options[, callback])
# Added in: v0.11.14

options <Object> Required. Supports the following properties:
    port <number>
    host <string>
    path <string> Will be ignored if port is specified. See Identifying paths for IPC connections.
    backlog <number> Common parameter of server.listen() functions.
    exclusive <boolean> Default: false
    readableAll <boolean> For IPC servers makes the pipe readable for all users. Default: false
    writableAll <boolean> For IPC servers makes the pipe writable for all users. Default: false
callback <Function> Common parameter of server.listen() functions.
Returns: <net.Server>

推荐阅读