win10 hyper-v 保留端口占用问题
提示
? Java后台用idea启动项目时,会发现有部分端口有时候会被莫名其妙的占用,在cmd控制台查看端口情况又发现该端口并没有被占用,不知道原因。
? 但是,使用指令:netsh winsock reset 然后重启电脑,端口又被释放了,就很奇怪,老是重启电脑就不是个事,治标不治本。
? 后续通过搜索引擎,查阅解决了该问题,现分享出来,供大家参考。(关键就是电脑启动了--》hyper-v,导致的问题)
一丶查看系统默认端口占用访问
powershell / cmd
指令:netsh int ipv4 show dynamicport tcp
# 协议 tcp 动态端口范围
Protocol tcp Dynamic Port Range
---------------------------------
Start Port : 1024
Number of Ports : 13977
二丶查看hyper-v启动后的保留端口范围
powershell / cmd
指令:netsh interface ipv4 show excludedportrange protocol=tcp
#协议 tcp 端口排除范围
#开始端口 结束端口
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
1026 1125
1226 1325
1326 1425
1426 1525
1526 1625
2180 2279 *
* - Administered port exclusions.
通过这个可以查看被占用的项目端口是否在这个范围内
三丶解决办法
由于直接进行第二步配置,会遇到程序占用(hyper-v占用)
所以需要先关闭hyper-v
关闭方式一:可以win+s 快捷键搜索 “windows功能” ,关闭hyper-v。
关闭方式二:或者使用下列命令(dism.exe /Online /Disable-Feature:Microsoft-Hyper-V),然后重启
1.配置ipv4动态端口 (1和2方法任取其一均可解决问题)
powershell / cmd 管理员权限
# start 起始端口 num 表示可用端口数 根据自己的需求来 默认是 1024 13977
指令:netsh int ipv4 set dynamicport tcp start=30000 num=16383
2.配置需要的端口不被占用(1和2方法任取其一均可解决问题)
powershell / cmd 管理员权限
# 排除ipv4动态端口占用 startport 起始端口 numberofports 端口数
指令:netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1
# 重启hyper-v
指令:dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All