美文网首页
Error: listen EACCES: permission

Error: listen EACCES: permission

作者: 道行者 | 来源:发表于2024-04-06 17:07 被阅读0次

    近来开发,在启动程序时,会遇到类似错误,导致程序起不来:

    Error: listen EACCES: permission denied 0.0.0.0:7001
    

    网上查了一下,说是 windows 为 Hyper-V 保留的端口号,所以不能使用。这个保留区间是不固定的,所以有时重启机器后又可以用了。可用如下命令查看保留了哪些端口号:

    > netsh interface ipv4 show excludedportrange protocol=tcp
    Protocol tcp Port Exclusion Ranges
    
    Start Port    End Port
    ----------    --------
          5357        5357
          6180        6279
          6280        6379
          6380        6479
          6480        6579
          6680        6779
          6780        6879
          6880        6979
          6980        7079
          7102        7201
          7202        7301
         49719       49818
         50000       50059     *
         50060       50159
         50260       50359
         50560       50659
         52733       52832
         52833       52932
         52943       53042
         53143       53242
    
    * - Administered port exclusions.
    

    发现 7001 确实在这个保留的范围内。又查到说是可用如下命令限定这个保留区间(以管理员身份执行):

    net stop winnat
    netsh int ipv4 set dynamic tcp start=49152 num=16384
    netsh int ipv6 set dynamic tcp start=49152 num=16384
    net start winnat
    

    执行后,确实变了:

    > netsh interface ipv4 show excludedportrange protocol=tcp
    
    Protocol tcp Port Exclusion Ranges
    
    Start Port    End Port
    ----------    --------
          5357        5357
         50000       50059     *
    
    * - Administered port exclusions.
    

    但是觉得跟这命令中写的端口号范围没有关系!改了 start 和 num 重新执行这些命令,发现还是 5357 和 50000 到 50059。
    不知道以后会怎么样,看来若是碰到这种情况,重启一下 winnat 可能会好。

    相关文章

      网友评论

          本文标题:Error: listen EACCES: permission

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