windows Dronekit-sitl无法绑定到默认端口5760

omhiaaxx  于 2023-02-25  发布在  Windows
关注(0)|答案(1)|浏览(132)

我在Windows 10机器上的python3虚拟环境中安装了dronekit-sitl,之前运行dronekit-sitl copter时没有任何问题。然而,截至今天,我在尝试执行ArduCopter sitl时遇到了似乎是权限问题的问题。

$ dronekit-sitl copter
os: win, apm: copter, release: stable
SITL already Downloaded and Extracted.
Ready to boot.
Execute: C:\Users\kyrlon\.dronekit\sitl\copter-3.3\apm.exe --home=-35.363261,149.165230,584,353 --model=quad -I 0
SITL-0> Started model quad at -35.363261,149.165230,584,353 at speed 1.0
SITL-0.stderr> bind port 5760 for 0
Starting sketch 'ArduCopter'
bind failed on port 5760 - Operation not permitted
Starting SITL input

不确定是什么触发了新的操作权限问题,我尝试用一个新的Python环境重新开始,但即使在完全关闭PC后,我仍然有如上所示的错误。

goqiplq2

goqiplq21#

事实证明,在我的系统上有docker是罪魁祸首,并且排除了我试图使用的端口,如SO post中所提到的,这导致了我使用这个github issue

netsh interface ipv4 show excludedportrange protocol=tcp

为我提供了以下排除端口的结果:

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      1496        1595
      1658        1757
      1758        1857
      1858        1957
      1958        2057
      2058        2157
      2180        2279
      2280        2379
      2380        2479
      2480        2579
      2702        2801
      2802        2901
      2902        3001
      3002        3101
      3102        3201
      3202        3301
      3390        3489
      3490        3589
      3590        3689
      3693        3792
      3793        3892
      3893        3992
      3993        4092
      4093        4192
      4193        4292
      4293        4392
      4393        4492
      4493        4592
      4593        4692
      4768        4867
      4868        4967
      5041        5140
      5141        5240
      5241        5340
      5357        5357
      5358        5457
      5458        5557
      5558        5657
      5700        5700
      5701        5800
      8005        8005
      8884        8884
     15202       15301
     15302       15401
     15402       15501
     15502       15601
     15602       15701
     15702       15801
     15802       15901
     15902       16001
     16002       16101
     16102       16201
     16202       16301
     16302       16401
     16402       16501
     16502       16601
     16602       16701
     16702       16801
     16802       16901
     16993       17092
     17093       17192
     50000       50059     *

* - Administered port exclusions.

原来Docker或Hyper-V排除了包括5760的范围:

5701        5800

正如github问题中所提到的,我可能在多次重启后解决了这个问题,这些重启增加了端口范围,或者可能在我的系统上运行docker之前幸运地启动了dronekit-sitl。无论哪种方式,要解决 *Operation not permised * 的问题,请以admin身份运行以下命令:

net stop winnat
net start winnat

解决了dronekit-sitl的问题,无需指定除默认5760之外的其他端口。

相关问题