我已经找到了这个问题的答案,只是想记录我的发现。
在我最近的一个项目中,我发现某个端口不会在 netstat 中显示为正在使用,但是当我的项目尝试使用该端口时,会抛出错误。
例如,假设我想使用端口 53000:
netstat -ano | findstr :53000
什么都不会显示,但如果我尝试使用该端口Node.js,会抛出权限错误。
事实证明,Hyper-V、Docker 等都会保留一系列端口。要找出保留端口的范围,请执行以下操作:
netsh interface ipv4 show excludedportrange protocol=tcp
就我而言,我会看到这样的事情:
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
49805 49904
50000 50059 *
50060 50159
50160 50259
50360 50459
50870 50969
50970 51069
51070 51169
51270 51369
52353 52452
52453 52552
52553 52652
52653 52752
52853 52952
52953 53052
53053 53152
53324 53423
56247 56346
56347 56446
56547 56646
56647 56746
* - Administered port exclusions.
为了解决我的问题,我可以:
- 禁用 Hyper-V
-
netsh int ipv4 add excludedportrange protocol=tcp startport=53000 numberofports=1
(作为管理员)
- 启用 Hyper-V
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)