演示代码
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 的小差别