audiorelay 中文文档 下载 App

Hyper-V 可能抢占 59100 端口导致连接失败排查

如果你装了 Docker for Windows、WSL2、Hyper-V 任何一个组件,Windows 可能会抢占保留一段端口范围——AudioRelay 用的 59100 端口就在 Hyper-V 默认保留范围里。

现象

怎么确认是 Hyper-V 的问题

管理员 PowerShell 跑:

netsh int ipv4 show excludedportrange protocol=tcp

如果输出里 59100 在某个排除范围里(比如 59000 - 59199),那就是 Hyper-V / Docker / WSL2 抢了。

修复方法

方法是让 Hyper-V 保留一段不包含 59100 的端口范围。

步骤 1:打开 Hyper-V 保留端口命令

管理员 PowerShell 跑:

net stop winnat
netsh int ipv4 add excludedportrange protocol=tcp startport=59200 numberofports=100
net start winnat

解释:把 Hyper-V 保留端口从 59000 段移到 59200 段,这样 59100 就空出来给 AudioRelay 了。

步骤 2:确认 AudioRelay 现在能用了

  1. AudioRelay PC 端重启
  2. 手机重新连
  3. netstat -ano | findstr "59100" → 应该能看到 AudioRelay 监听了

替代方案:禁用 Hyper-V 保留端口

如果你根本不用 Hyper-V / Docker / WSL2(或可以接受关掉它们),直接关掉 Windows 的 Hyper-V 组件就行:

  1. 控制面板 → 程序和功能 → 启用或关闭 Windows 功能
  2. 去掉「Hyper-V」和「适用于 Linux 的 Windows 子系统」的勾选
  3. 重启

重启后 Hyper-V 不再保留端口,AudioRelay 直接能用。

补充:Docker Desktop 的特殊情况

Docker Desktop for Windows 会自动启用 Hyper-V 或 WSL2 后端。如果你用 Docker 但又想用 AudioRelay,那就用上面「加排除端口范围」的方法——既保留 Docker 又给 AudioRelay 让路。

端口范围的注意事项

netsh int ipv4 add excludedportrange 设置的范围重启后会失效——Hyper-V 服务重启(每次开机)会重新占用默认范围。所以你可能需要:

  1. 把上面三条命令做成一个 .ps1 脚本,放进「启动」文件夹,每次开机自动跑
  2. 或者用计划任务(Task Scheduler)在开机时触发

最简单的方式:新建一个文本文件叫 audiorelay-fix.ps1,内容就是那三条命令,然后创建一个计划任务让它在系统启动时以管理员权限运行。