问题描述
在端口被占用时,用命令查看占用的程序。但是没有结果输出,代表没有程序在占用。(实际上是“没有程序在此刻占用这个端口,但不排除有程序在随机保留着这个端口”)
netstat -ano | findstr ":7890"
这是因为电脑开启了 Hyper-V ,它会保留一部分 TCP/IP 端口供其虚拟交换机使用,这可能导致某些应用程序无法绑定到这些端口。我们可以用以下命令查看其保留的端口。
# 查看 Hyper-v 启动后的保留端口范围
netsh interface ipv4 show excludedportrange protocol=tcp
临时解决方案——排除单个端口(重启可能失效)
- 以管理员身份运行 PowerShell 或 CMD
- 停止 Hyper-V 相关服务:
net stop winnat
- 手动添加端口排除(例如释放
7890
):netsh int ipv4 delete excludedportrange protocol=tcp startport=7890 numberofports=1
protocol=tcp
(或udp
)startport=7890
(你要释放的端口)numberofports=1
(只释放 1 个端口)
- 重启 WinNAT 服务(恢复网络):
net start winnat
- 验证是否成功:
netsh int ipv4 show excludedportrange protocol=tcp | findstr "7890"
- 如果无输出,说明
7890
已不再被保留,可以正常使用。
- 如果无输出,说明
⚠️ 注意:
- 重启后可能失效,因为 Hyper-V 可能会重新占用该端口。
- 如果仍然无法使用,可能是其他服务占用了该端口(用
netstat -ano | findstr "50000"
检查)。