問題描述
在Windows系統開發時,經常遇到端口無法使用的問題。系統會自動保留一系列TCP/UDP端口范圍,導致應用程序無法綁定這些端口。
查看所有被保留的端口范圍
查看TCP保留端口
# 查看所有TCP端口排除范圍
netsh interface ipv4 show excludedportrange protocol=tcp
查看UDP保留端口
# 查看所有UDP端口排除范圍
netsh interface ipv4 show excludedportrange protocol=udp
檢查特定端口是否被保留
方法一:使用netstat檢查端口占用
# 檢查指定端口是否被占用(將55000替換為你要檢查的端口)
netstat -ano | findstr :55000# 查看所有端口占用情況
netstat -ano
方法二:結合查看排除范圍
先運行查看命令,然后在輸出結果中查找你的目標端口是否在任何一個Start Port - End Port
范圍內。
釋放被保留的端口
通用釋放方法(適用于任何端口)
以管理員身份打開CMD或PowerShell:
# 1. 首先查看當前的排除范圍,找到目標端口所在的區間
netsh interface ipv4 show excludedportrange protocol=tcp# 2. 停止網絡服務
net stop winnat# 3. 移除特定的端口排除范圍(根據第一步查到的范圍)
# 語法:netsh int ipv4 delete excludedportrange protocol=tcp startport=起始端口 number=數量
netsh int ipv4 delete excludedportrange protocol=tcp startport=54999 number=100# 4. 重啟網絡服務
net start winnat# 5. 驗證排除范圍已移除
netsh interface ipv4 show excludedportrange protocol=tcp
批量釋放多個范圍
net stop winnat# 一次移除多個排除范圍
netsh int ipv4 delete excludedportrange protocol=tcp startport=50000 number=60
netsh int ipv4 delete excludedportrange protocol=tcp startport=54999 number=100
netsh int ipv4 delete excludedportrange protocol=tcp startport=55600 number=100net start winnat
完全重置所有端口排除
# 停止服務
net stop winnat# 完全重置IPv4設置(會清除所有排除范圍)
netsh int ipv4 reset# 啟動服務
net start winnat# 驗證所有排除范圍已清除
netsh interface ipv4 show excludedportrange protocol=tcp
實用技巧
1. 查找特定端口在哪個排除范圍內
# 查看所有TCP排除范圍
netsh interface ipv4 show excludedportrange protocol=tcp# 在輸出中查找你的目標端口落在哪個Start Port - End Port區間內
2. 計算要移除的端口數量
數量 = End Port - Start Port + 1
例如:54999-55098 → 數量 = 55098 - 54999 + 1 = 100
3. 一鍵檢查并提示
@echo off
echo 正在檢查TCP端口排除范圍...
netsh interface ipv4 show excludedportrange protocol=tcp
echo.
echo 請查看上面的輸出,找到你要使用的端口是否在排除范圍內
echo 如果在某個范圍內,使用以下命令釋放:
echo netsh int ipv4 delete excludedportrange protocol=tcp startport=起始端口 number=數量
pause
注意事項
必須使用管理員權限運行這些命令
操作后可能需要重啟你的應用程序
Docker、Hyper-V等軟件可能會重新設置排除范圍
如果經常需要特定端口,考慮在應用程序中改用其他端口
總結
通過以上方法,你可以:
? 查看所有被系統保留的端口范圍
? 檢查任意特定端口是否可用
? 釋放任何被保留的端口
? 徹底重置所有端口排除設置
希望這篇指南能幫助你解決Windows端口占用問題!如果有其他疑問,歡迎在評論區交流。