最新消息:看到那些跳动的图片、文字了吗?点击点击 O(∩_∩)O~~

Node.js listen 127.0.0.1 或 0.0.0.0 的小差别

若思若想 onlyling 6639浏览

演示代码

var http = require('http');

http.createServer(function (request, response) {

    // 发送 HTTP 头部 
    // HTTP 状态值: 200 : OK
    // 内容类型: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});

    // 发送响应数据 "Hello World"
    response.end('Hello World\n');
}).listen(8888);

// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

这是从某教程上复制的一段代码,只要通过上面的 http://127.0.0.1:8888 地址就能访问。

笔记

绑定的地址

server.listen(port, [hostname], [backlog], [callback])#

Begin accepting connections on the specified port and hostname. If the hostname is omitted, the server will accept connections directed to any IPv4 address (INADDR_ANY).

如果不填写主机名 hostname 字段,默认是监听 INADDR_ANY,也就是任意的 IPv4 地址。

大多情况下直接 listen(1337) 或者 listen(1337,’0.0.0.0′) 就可以了。

这个 0.0.0.0 也就是所谓的 INADDR_ANY。

localhost 与 127.0.0.1

localhost 是一个域名,在过去它指向 127.0.0.1 这个IP地址。

可以在系统的 hosts 文件里看到对应的绑定关系。

127.0.0.1 是一个回送地址,指本地机,一般用来测试使用。大家常用来 ping 127.0.0.1 来看本地 ip/tcp 正不正常,如能 ping 通即可正常使用。对于大多数习惯用 localhost 的来说,实质上就是指向 127.0.0.1 这个本地 IP 地址,可以理解为本地主机的意思。

0.0.0.0

INADDR_ANY 这个也叫通配地址,也就是说它不单单指本机。

0.0.0.0/8 可以表示本网络中的所有主机。

0.0.0.0/32 可以用作本机的源地址。

0.0.0.0/8 也可表示本网络上的某个特定主机。

综合起来可以说 0.0.0.0 表示整个网络。

在路由器配置中可用 0.0.0.0/0 表示默认路由,作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

小差别

使用 listen(1337, ‘127.0.0.1’) 启动的应用,本机访问没问题,局域网内其他机器访问会出一点问题,换成 listen(1337,’0.0.0.0′) 就好了。

转载请注明:OnlyLing - Web 前端开发者 » Node.js listen 127.0.0.1 或 0.0.0.0 的小差别