在 Windows 中遇到莫名奇妙的端口被占用时

A、有其它程序占用了端口,使用命令:

netstat -aon|findstr "被占用端口号"

返回内容中,最后一列是占用进程的ID,可以从任务管理器中找到对应ID的进程信息,或者直接结束进程:

taskkill /pid 该程序PID -t -f

B、通过上面命令也找不到被占用,可能是被系统保留了端口(比如 Hyper-V?):

netsh interface ipv4 show excludedportrange protocol=tcp

检查被占用的端口是否在此列表范围中,如果是的话,如果是 Hyper-V 的原因的话:

1、临时禁用Hyper-V

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

2、重启后,请保留所需端口,以便Hyper-V不会将其占用

netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1

3、(可选)添加一个注册表项来防止Windows容器主机网络服务(HNS)保留端口,重启生效

reg add HKLMSYSTEMCurrentControlSetServiceshnsState /v EnableExcludedPortRange /d 0 /f

4、重新启用Hyper-V

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

转自:https://www.cnblogs.com/StarsbySea/p/Windows-ports-occupied.html

https://github.com/docker/for-win/issues/3171

https://github.com/shadowsocks/shadowsocks-windows/issues/1835


输了你,赢了世界又如何...
原文地址:https://www.cnblogs.com/xwgli/p/13609041.html