实用技巧windows解决端口占用,hyper-v占用动态端口
nodaoli常用命令
查找进程
netstat -ano|findstr “8080”
netsh
netsh interface ipv4 <show/add/delete>
第一种问题(普通端口占用)
1 2 3 4 5 6 7 8 9 10 11
| C:\Users\Administrator>netstat -ano | findstr "8080" TCP 192.168.1.19:2759 120.232.31.225:8080 ESTABLISHED 20580 TCP [2409:8a5c:8224:8af0:95e7:b5f1:3324:35f4]:2761 [2409:8702:4860:100::4]:8080 ESTABLISHED 20580 TCP [2409:8a5c:8224:8af0:95e7:b5f1:3324:35f4]:2763 [2409:8c20:818:111::37]:8080 ESTABLISHED 20580 TCP [2409:8a5c:8224:8af0:95e7:b5f1:3324:35f4]:2765 [2409:8c54:871:3003::1d]:8080 ESTABLISHED 20580 TCP [2409:8a5c:8224:8af0:95e7:b5f1:3324:35f4]:2767 [240e:97c:2f:1003::17]:8080 ESTABLISHED 20580 TCP [2409:8a5c:8224:8af0:95e7:b5f1:3324:35f4]:2769 [240e:97c:2f:5::77]:8080 ESTABLISHED 20580
C:\Users\Administrator>taskkill /t /f /im 进程号( !!!注意是进程号,不是端口号)
|
第二种(动态端口保留)
首先
1 2
| netstat -ano | findstr "8080"
|
没有结果,意味着并不是有程序占用了端口
盲猜hyper-v保留了端口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
netsh int ipv4 show dynamicport tcp
协议 tcp 动态端口范围 --------------------------------- 启动端口 : 1024 端口数 : 13977
netsh interface ipv4 show excludedportrange protocol=tcp
协议 tcp 端口排除范围 开始端口 结束端口 ---------- -------- 1026 1125 1226 1325 1326 1425 1426 1525 1526 1625 2180 2279 ...
|
解决办法一
先以管理员身份打开 powershell,然后设置 tcp ipv4 的动态端口范围为 49152 开始的 16384 个端口,也就是 49152~65535
1
| netsh int ipv4 set dynamicport tcp start=49152 num=16384
|
然后重启电脑。Hyper-V 就会从 49152~65535 范围内保留一部分端口,6942~6991 和 9090 不受影响。
查看一下此时的动态端口范围:
1 2 3 4 5 6
| PS C:\Users\Administrator> netsh int ipv4 show dynamicport tcp
协议 tcp 动态端口范围 --------------------------------- 启动端口 : 49152 端口数 : 16384
|
解决办法二
先以管理员身份打开 powershell,然后将 7890 等端口设置为排除端口给应用程序(clash)使用。
1 2 3 4
| # 保留 6942~6951 这10个端口给应用程序使用 netsh int ipv4 add excludedportrange protocol=tcp startport=6942 numberofports=10 # 保留 7890 端口给应用程序使用 netsh int ipv4 add excludedportrange protocol=tcp startport=7890 numberofports=1
|
然后重启电脑。因为 9090 等端口被保留给应用程序使用了,Hyper-V 就无法将 9090 保留给自己使用了。
查看一下此时被保留的端口:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| PS C:\Users\Administrator> netsh int ipv4 show excludedport tcp
协议 tcp 端口排除范围
开始端口 结束端口 ---------- -------- 1578 1677 1678 1777 太多了这里省略... 7890 7890 * 太多了这里省略... 11301 11400 11401 11500 太多了这里省略...
* - 管理的端口排除。
|
带星号的就是被管理员保留的端口,可以被应用程序使用
如果要取消保留端口,可以:
1
| netsh int ipv4 delete excludedportrange protocol=tcp startport=9090 numberofports=1
|