端口显示被占用,netstat -aon | findstr却找不到端口的解决方法

 

一、问题描述

经常在电脑重启之后打开容器 / 启动IDEA / 运行 Spring Boot 应用时,会报某个端口已经被占用,但是在使用netstat -aon | findstr "3306"时却找不到占用端口的程序,往往在电脑重启之后会解决这个这个问题。

二、原因

本机启用了 Hyper-V 功能,这个功能与 Docker 或者 虚拟机 有关,使用 WSL2也需要开启这个功能。Widows 默认把某些端口范围分给了 Hyper-V ,成为了保留端口,所以我们无法使用这个端口。并且由于这个端口分配在电脑重启的时会重新随机分配,所以出现了前面 重启几次电脑的解决办法。

1. 查看 Windows 默认的 tcp 动态端口范围

使用命令netsh int ipv4 show dynamicport tcp就可以查看。这里先借用别人的结果,因为我这边机器已经重新设置了。

> netsh int ipv4 show dynamicport tcp
  • 设置之前的结果

20210302094829.png

这里可以看到默认的 tcp 动态范围为 1024-13977,并且当我们开启 Hyper-V 之后,系统会默认分配一些端口给 Hyper-V 使用。

2. 查看保留端口范围

使用命令 netsh interface ipv4 show excludedportrange protocol=tcp 就可查看保留端口的范围了。

> netsh interface ipv4 show excludedportrange protocol=tcp
  • 设置之前的结果

20210302095346.png

可以看到 IDEA 运行所需的端口在这个范围内,有时候 3306这样的端口也会在这个范围中包括,从而不能运行 MySQL。

三、解决问题

使用管理的身份运行 CMD ,设置动态端口的范围,使得这个保留端口的范围避开我们需要的端口范围。

> netsh int ipv4 set dynamicport tcp start=49152 num=16383
> netsh int ipv4 set dynamicport udp start=49152 num=16383

然后重新启动电脑,使用上面的命令检查端口占用:

  • 32
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: netstat -aon|findstr 是一个Windows命令行命令,用于列出所有网络连接和它们的进程ID。其中,netstat是网络统计命令,-a参数表示列出所有连接,-o参数表示显示进程ID,-n参数表示以数字形式显示地址和端口号。而findstr是一个字符串搜索命令,用于在输出中查包含特定字符串的行。因此,netstat -aon|findstr 的作用是在所有网络连接中查包含指定字符串的行,并显示它们的进程ID。 ### 回答2: netstat是一个管理网络连接和网络统计信息的命令行工具。它可以显示当前计算机上所有的网络连接,包括TCP,UDP和其他协议。 而“-a”参数会列出所有连接和侦听端口,同时显示相关的进程ID。而“-o”参数会显示相关进程的PID号码。 通过将netstat命令与“|”运算符和“findstr”命令组合使用,就可以查特定端口的进程ID号。 以下是netstat -aon|findstr查询端口为8080的进程的示例: 首先按Win+r,输入cmd,打开命令提示符窗口。 输入netstat -aon|findstr “8080”, 按下回车键。 系统将会显示出所有端口号为8080的网络连接以及相应的进程ID号码。 例如,用户可能会看到: TCP 192.168.1.101:8080 0.0.0.0:0 LISTEN 1025 这表示TCP端口号8080正在被一个进程(PID 1025)占用。 在实际操作中,人们可以通过这些信息帮助确定哪些进程在占用特定端口,以及进程号码对应的进程名称。这对于管理网络连接、诊断网络问题以及清理计算机上的恶意软件都非常有帮助。 ### 回答3: Netstat -aon|findstr 是一个Windows系统下的命令行指令,它通过查看网络状态和 TCP/IP 连接来显示计算机的网络连接信息。在命令行中输入该指令后,系统会返回当前计算机的所有网络连接情况,包括本地计算机的IP地址、端口号、远程计算机的IP地址、远程计算机使用的端口号、连接的状态等详细信息。 其中,“-a”参数代表显示所有正在监听的 TCP 和 UDP 端口,包括服务器端口和客户端连接端口;“-o”参数代表显示建立连接的进程ID;“-n”参数表示使用数字格式来显示地址和端口号,而不是使用主机名和端口名称;“|findstr”则是一种命令过滤器,它可以对输出结果进行筛选。 通过这个命令,用户可以快速了解到计算机的网络连接情况,进而排查网络问题或查存在安全漏洞的进程和应用程序。一般情况下,我们可以使用 netstat 命令加上其他的参数来进行更加详细和精准的查询。同时,对于一些有权限的用户,也可以使用 netstat 命令加上“-b”参数,来获取该端口号所对应的进程可执行文件路径和名称,帮助用户定位和识别可能存在的安全风险。 总之,对于网络工程师或信息安全人员来说,掌握 netstat -aon|findstr 用法是非常有必要的,它可以帮助我们更好地了解计算机和网络的状态,从而更有效地保护计算机的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值