首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Node.JS .listen(端口,“主机名”)不能工作

Node.JS .listen(端口,“主机名”)不能工作
EN

Stack Overflow用户
提问于 2018-12-03 13:13:48
回答 3查看 4K关注 0票数 3

目前,我试图拆分一个node.js服务器,并且我确实想了解server.listen的参数。

代码语言:javascript
复制
server.listen(port, hostname, backlog, callback);

问:据我所知,听的第二个论点应该是主机名。结果应该是,我能够通过“主机名:7000”到达服务器,但结果是脚本崩溃了。没有“主机名”一切都很好。这里有什么问题?“主机名”的用法是什么?

代码语言:javascript
复制
const server = http.createServer(function (req, res) {    
console.log(req); 

}); 

server.listen(7000, "bla");

浏览器:

代码语言:javascript
复制
bla:7000

不起作用。

错误:

代码语言:javascript
复制
Error: listen EADDRNOTAVAIL 22.0.0.0:7000
at Object.exports._errnoException (util.js:1022:11)
at exports._exceptionWithHostPort (util.js:1045:20)
at Server._listen2 (net.js:1246:19)
at listen (net.js:1295:10)
at net.js:1405:9
at _combinedTickCallback (internal/process/next_tick.js:77:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
at Module.runMain (module.js:606:11)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-03 13:21:43

在服务器有多个网络接口的情况下使用hostname参数,您只希望服务器在其中一个接口上侦听(与默认情况相反,默认情况是侦听所有接口)。

例如,如果您希望服务器只能由运行在服务器上的客户端访问,则可以让它侦听具有IP地址"127.0.0.1“或主机名”localhost“的环回网络接口:

代码语言:javascript
复制
server.listen(7000, "localhost")
server.listen(7000, "127.0.0.1")

这并不意味着您只需输入任何主机名就可以神奇地通过该主机名访问服务器,这不是它的工作方式,也不是它的目的。

票数 5
EN

Stack Overflow用户

发布于 2018-12-03 13:23:22

不允许将任何随机字符串作为主机参数。服务器试图将自己绑定到提供的主机名。因此,您的主机名应该是您的ip或可从dns访问的主机名。

如果省略了主机,当IPv6可用时,服务器将接受未指定的IPv6地址(::)上的连接,否则将接受未指定的IPv4地址(0.0.0.0)。

票数 1
EN

Stack Overflow用户

发布于 2019-04-05 14:13:50

我也遇到了类似的问题,因为路由器或代理修改了请求的主机名.结果,内部网和外部网客户端有两个不同的名称。

我的解决方案是将主机名设置为空白。

server.listen(7000, "")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53594612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档