提示
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