我偶然发现了一些有趣的东西,我无法解释它,谷歌搜索也没有成效。
我有一台 Express 服务器,即服务器 1,绑定到localhost:
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('server 1'))
app.listen(4000, 'localhost')
Run Code Online (Sandbox Code Playgroud)
node 37624 user 27u IPv4 0x681653f502970305 0t0 TCP localhost:4000 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
我有另一个 Express 服务器,即服务器 2,绑定到以下所有接口0.0.0.0:
node 37624 user 27u IPv4 0x681653f502970305 0t0 TCP localhost:4000 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
node 37624 user 27u IPv4 0x681653f502970305 0t0 TCP localhost:4000 (LISTEN)
node 37693 user 25u IPv4 0x681653f4fdbdc005 0t0 TCP *:4000 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
Curling0.0.0.0给出了来自服务器 1 的响应,服务器 1 绑定到localhost,因此显然这两个是冲突的。
然而,不知何故,这并没有引发人们预期的错误,EADDRINUSE,这怎么可能?