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