【问题标题】:Node.js seems to ignore my IP address i give, instead it uses localhost to open the serverNode.js 似乎忽略了我提供的 IP 地址,而是使用 localhost 打开服务器
【发布时间】:2018-11-12 08:06:07
【问题描述】:

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

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 并且应该可以工作”,所以我做到了。

此代码适用于 localhost 服务器吗?

我不知道它是否会有所帮助,但通常我使用 p5.js 库(The Coding Train),端口转发设置为:服务端口 - 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 的事情,有点搞砸了,但实际上什么也没发生。我对那里的有用信息没有任何其他想法。我希望有人能帮助我,我会回答有关其他信息的所有问题。

【问题讨论】:

  • 您只能使用已连接网络的网络分配 ip,您不能将自己的 ip 分配给您的主机

标签: javascript node.js server


【解决方案1】:

在选项中必须是host 而不是hostname。因此,对于您的代码,host 不存在于选项中,并且 localhost 被用作默认值。

server.listen(options[, callback])

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>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-10-13
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 2016-11-11
  • 1970-01-01
  • 2021-02-05
相关资源
最近更新 更多