Hyper-V和IDEA运行端口占用问题

摘要:
由于安装了Windows版本的Docker环境,因此启用了Hyper-V。结果是,当运行Tomcat时,IDEA提示端口1099被占用。经过探索,成功找到了解决方案。当我们打开Hyper-V时,默认情况下,系统将为Hyper-V分配一些保留端口以供使用:netshipfaceip4showexcludedportrangeprotocol=tcp C:UsersChilius˃netshipfaceIP4showexcincludedportrange protocol=tcp协议tcp端口排除范围起始端口结束端口------------------1026112512261325132614251425251526162521802279我们可以看到IDEA运行Tomcat所需的端口1099正好在端口排除范围内,因此,当IDEA需要使用端口1099时,端口1099将被占用,因此您无法运行它。

前面的话】因为安装Windows版本的Docker环境,开启了Hyper-V。其结果是导致了IDEA在运行Tomcat的时候提示1099端口占用,经过探索之后成功找到了解决方案。

壹、原因分析

首先我们可以查看一下我们系统默认的端口占用范围;

netsh int ipv4 show dynamicport tcp

Microsoft Windows [版本 10.0.18363.752]
(c) 2019 Microsoft Corporation。保留所有权利。

C:UsersChirius>netsh int ipv4 show dynamicport tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 1024
端口数          : 13977

我们可以看到Windows系统默认的tcp 动态端口范围为:1024~13977。当我们开启Hyper-V后,系统默认会分配给一些保留端口供Hyper-V使用:

netsh interface ipv4 show excludedportrange protocol=tcp

C:UsersChirius>netsh interface ipv4 show excludedportrange protocol=tcp
协议 tcp 端口排除范围
 
开始端口    结束端口
----------    --------
      1026        1125
      1226        1325
      1326        1425
      1426        1525
      1526        1625
      2180        2279

我们可以看到IDEA运行Tomcat需要JMX的1099端口刚好在端口排除范围中,这样就导致了IDEA需要使用1099端口是会被占用,这样你当然就不能运行了。

贰、解决方法

使用管理员身份运行cmd,重置端口,然后重启

C:UsersChirius>netsh winsock reset

这样你的tcp端口排除范围可能刚好不包含1099端口,这样你当然就可以用你的IDEA运行Tomcat应用了。但是你啥时候会出现就不得而知了。

叁、终极解决

3.1 关闭Hyper-V

Microsoft Windows [版本 10.0.18363.752]
(c) 2019 Microsoft Corporation。保留所有权利。

C:WINDOWSsystem32>dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

或者采用传统方式,在控制面板的“程序和功能”中,找到“Windows功能”,取消Hyper-V的勾选。这两种方法都会要求重启。

3.2 修改动态端口范围

使用管理员身份运行cmd

C:WINDOWSsystem32>netsh int ipv4 set dynamicport tcp start=49152 num=16383
确定。


C:WINDOWSsystem32>netsh int ipv4 set dynamicport udp start=49152 num=16383
确定。

然后检查结果

C:UsersChirius>netsh int ipv4 show dynamicport tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16383

3.3 开启Hyper-V

C:WINDOWSsystem32>dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

部署映像服务和管理工具
版本: 10.0.18362.1

映像版本: 10.0.18363.752

启用一个或多个功能
[==========================100.0%==========================]
操作成功完成。
重新启动 Windows 以完成该操作。
是否立即重新启动计算机? (Y/N)

开启Hyper-V

或者采用传统方式,在控制面板的“程序和功能”中,找到“Windows功能”,取消Hyper-V的勾选。这两种方法都会要求重启。

后面的话】使用终极解决方案解决之后,你会发现你的IDEA又可以正常运行了。另外这里说一个单独排除端口的命令,后面可能会用到:

netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1

使用上面的命令之后我们就可以单独排除某个端口了,保障改端口不会被其他应用占用。


薏米笔记

免责声明:文章转载自《Hyper-V和IDEA运行端口占用问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇白鹭和layabox H5游戏开发引擎比较一、数组---两数之和(升级版)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

IDEA 创建 MAPPER 模板

Mybatis 是一款优秀的 ORM 框架,但是在 IDEA 工具使用时并未自带 MAPPER 文件模板,需要手工添加,接下来就一起在 IDEA 中创建一个 MAPPER 文件模板吧; 1、打开 IDEA ,右键 new-->Edit File Template 2、点击 + ,输入此模板名称 3、黏贴 MAPPER 模板内容: <?xml...

Python脚本与Metasploit交互攻击

Metasploit是一款强大的漏洞扫描和利用工具,编写Python脚本与Metasploit进行交互,可以自动化的扫描和利用漏洞。 相关文章:Metasploit框架的使用 在脚本中,我们首选需要利用 nmap 模块扫描目标主机是否开放了445端口,我们写了一个 findTarget()函数,来扫描给定ip或者给定网段中开放了目标端口的主机,返回开放了4...

IDEA中 @override报错的解决方法(转载)

今天用IDEA导入一个java工程时,碰上一个问题,代码中所有@override处标红,并提示:@override不支持对接口的实现。 网上百度了一下发现, 原因是引用JDK5版本中存在小bug的问题。@Override是JDK5就已经有了,但是不支持对接口的实现,认为这不是Override而报错。JDK6修正了这个Bug,无论是对父类的方法覆盖还是对接...

Nmap使用

Nmap简介 Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。 Nmap使用说明 Timing 模板 timing 参数可以指定 nmap 扫描的速度。其中各个选项如下: l T...

美团点评面试20190515

1. 自我介绍 2. 项目介绍,项目难点 3. 笔试题研究过吗? 4. Mybatis多参数传递    //方法1:顺序(索引)传参法 public User selectUser(String name, int deptId); <select resultMap="UserResultMap"> select * fro...

idea在处理spring国际化解决中文乱码,properties的格式:native-to-ascii

在idea总是可以设置自动转码的:勾选如图所示 在编辑器中切换到Resuource bundle中去 这个时候在下面输入中文,则自动转为native-to-ascii,因为已经透明了,所以在这里看不到,用txt打开源文件,则已经转换了 来自为知笔记(Wiz)...