解决报错“此端口已被占用”问题

2022年2月18日 362点热度 0人点赞 0条评论

在 Windows 系统使用一些软件的时候,经常会弹出“此端口已被占用”的报错,因而将这个问题在这里梳理一下。

这个问题一般来说有两个原因,一个是这个端口已经被某个应用使用,另一个原因是这个端口被系统保留了。

问题排查

首先,检查端口占用情况:

# powershell
netstat -ano | findstr "端口号"

如果有结果,就是被其他应用占用,会显示对应的 PID;否则的话,考虑是被系统保留了。

被其他应用占用

如果是被其他应用占用,直接 kill 就好:

taskkill /f /t /im PID

被系统保留

造成系统保留端口的原因比较多,其中一个就是 hyper-v 虚拟机开启或者打开了 WSL2 的原因。

首先,查看系统的保留端口列表:

# 查看系统默认端口占用访问
netsh int ipv4 show dynamicport tcp 
# 结果为: 
协议 tcp 动态端口范围
---------------------------------
启动端口        : 1024
端口数          : 13977

# 查看hyper-v启动后的保留端口范围
netsh interface ipv4 show excludedportrange protocol=tcp 
# 结果为: 
协议 tcp 端口排除范围

开始端口    结束端口
----------    --------
      1052        1151
      1152        1251
      1452        1551
      1552        1651
      1866        1965
      3122        3221
      3222        3321
      3322        3421
      3422        3521
      3522        3621
      3622        3721
      3722        3821
      5357        5357
     14367       14466
     14469       14568
     50000       50059     *

如果使用的端口在上述列表中,则表明该端口是被保留了,解决办法如下:

设置保留端口确保不被占用

# powershell / cmd 管理员权限
# start 起始端口  num 表示可用端口数     按自己的需求来
netsh int ipv4 set dynamicport tcp start=30000 num=16383

# 排除ipv4动态端口占用 startport 起始端口 numberofports 端口数
netsh int ipv4 add excludedportrange protocol=tcp startport=5080 numberofports=1

PS:

已经被占用的端口无法被改动,需要先杀掉对应的进程。

改变应用使用的端口

选择系统保留端口列表之外的端口使用。

agedcat_xuanzai

这个人很懒,什么都没留下

文章评论

您需要 登录 之后才可以评论