博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
端口显示被占用,netstat -aon | findstr却找不到端口的解决方法
阅读量:2386 次
发布时间:2019-05-10

本文共 923 字,大约阅读时间需要 3 分钟。

 

一、问题描述

经常在电脑重启之后打开容器 / 启动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

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

转载地址:http://xinab.baihongyu.com/

你可能感兴趣的文章
Quickly gathering logins/emails with theHarvester and Metasploit
查看>>
Share:A File Checksum Integrity Verifier utility
查看>>
LDAP User Authentication On CentOS 5.x
查看>>
Linux 下 Trac SVN apache SSL 配置安装以及整合
查看>>
Virtual Hosting With PureFTPd And MySQL (Incl. Quota And Bandwidth Management) On Fedora 13
查看>>
nux系统下强制踢掉登录用户
查看>>
windows 2008 r2 AD密码策略
查看>>
域策略+脚本实现客户端administrator帐号密码统一
查看>>
Joomla 1.5.12 RCE via TinyMCE upload vulnerability
查看>>
Cpanel PHP Restriction Bypass Vulnerability 0day
查看>>
用PXE引导调用kickstart安装CentOS 5
查看>>
Varnish权威指南(中文)
查看>>
德勤审计内容
查看>>
用安全模板修改XP本地策略设置
查看>>
使用smokeping监测网络
查看>>
关于Mysql + asp.net注射能支持多语句的感慨
查看>>
一个很有用的apache指令SetEnvIf
查看>>
Metasploit Framework系列视频教程
查看>>
FreeBSD 8.1/7.3 vm.pmap kernel local race condition
查看>>
利用开源工具实现轻量级上网行为审计(来源ispublic.com)
查看>>