美文网首页
Windows 端口异常的解决步骤

Windows 端口异常的解决步骤

作者: alue | 来源:发表于2023-11-15 09:30 被阅读0次

    在 Windows 中,如果遇到端口无法正常使用的问题,首先会排查该端口是否被占用

    netstat -aon | findstr 3200
    

    大部分情况,都能定位到对应进程的 PID 号.

    但有时候,上述指令找不到对应的进程,但端口的确是不能使用。

    这个问题可能是 Windows 保留了某些端口,不让用户使用。可以使用下面的指令列出这些端口:

    netsh interface ipv4 show excludedportrange protocol=tcp
    
    
    Protocol tcp Port Exclusion Ranges
    
    Start Port    End Port
    ----------    --------
          3131        3230
          5357        5357
         50000       50099     *
         55500       55599
     
    * - Administered port exclusions.
    

    如果,我们的进程需要使用 3200 端口,就会报出下面的错误

    ERROR  error when starting dev server:                                 
    Error: listen EACCES: permission denied 127.0.0.1:3200
    

    解决方法

    大部分情况下,Windows 保留的端口是为 Hyper-V 准备的(也有其它的用途,例如 winnat 等,解决思路相同)。解决步骤就是先关闭 Hyper-V, 然后告诉系统保留我们需要的端口,然后再重启 Hyper-V.

    1. 关闭 Hyper-V

    三种方法:

    方法 1 控制面板
    • Programs and Features - Turn Windows features on or off - Uncheck the option Hyper-V -> 应用
    方法 2 Powershell
    Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
    
    方法 3 cmd
    dism.exe /Online /Disable-Feature: Microsoft-Hyper-V
    

    重启系统

    2. 保留端口

    例如,我们需要使用 3200 端口

    netsh int ipv4 add excludedportrange protocol=tcp startport=3200 numberofports=1
    
    3. 重启 Hyper-V

    跟步骤 1 相同,同样对应三种方法。

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

    这时候,检查端口排除:

    netsh int ipv4 show excludedport tcp
    
    协议 tcp 端口排除范围
    
    开始端口    结束端口
    ----------    --------
            82          82
          3200        3200     *
         50000       50059     *
    
    * - 管理的端口排除。
    

    可以看出,3200 属于管理的端口排除,也就是说,用户可以使用的端口,Hyper-V 不会去占用这个端口。

    如果,系统的端口保留不是因为Hyper-V,而是为了 winnat, 可以使用 net stop winnat 等命令,用相同的思路解决。

    相关文章

      网友评论

          本文标题:Windows 端口异常的解决步骤

          本文链接:https://www.haomeiwen.com/subject/mbjswdtx.html