在 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 HKLM\SYSTEM\CurrentControlSet\Services\hns\State /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
输了你,赢了世界又如何...