Win10端口没被却占用提示An attempt was made to access a socket in a way forbidden by its access permissions,我不理解

搜索发现是hyper-v的问题

查看动态端口范围

1netsh int ipv4 show dynamicport tcp
2
3C:\Users\jimyag>netsh int ipv4 show dynamicport tcp
4
5协议 tcp 动态端口范围
6
7启动端口 : 1024
8端口数 : 13977

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

 1netsh interface ipv4 show excludedportrange protocol=tcp
 2C:\Users\jimyag>netsh interface ipv4 show excludedportrange protocol=tcp
 3
 4协议 tcp 端口排除范围
 5
 6开始端口 结束端口
 7
 81026 1125
 91226 1325
101326 1425
111426 1525
121526 1625
132180 2279
14... ...

解决方案

修改动态端口的起始

使用管理员身份运行cmd

1C:\WINDOWS\system32>netsh int ipv4 set dynamicport tcp start=49152 num=16383
2确定
3
4
5C:\WINDOWS\system32>netsh int ipv4 set dynamicport udp start=49152 num=16383
6确定

然后检查结果

1C:\Users\jimyag>netsh int ipv4 show dynamicport tcp
2
3协议 tcp 动态端口范围
4---------------------------------
5启动端口        : 49152
6端口数          : 16383

参考

修改Hyper-V动态端口范围以解决Windows 10下Docker等应用端口占用问题