端口冲突:重复启动 LANDrop 会怎样
问题场景
Windows 上(或其他桌面端),如果你不小心双击了两次 LANDrop.exe,或者在第一个实例还在后台运行时又开了一个新的:
- 第一个实例正常启动、监听 LANDrop 常用的 UDP 端口、正常接收和发送;
- 第二个实例启动时会报一条关于端口被占用的错误(具体文案因版本而异),但不会立即退出——它可能会在后台继续运行,只是无法正常参与发现和传输;
- 两个实例同时跑着的时候,发现和传输行为可能不可预测——LANDrop 客户端列表里可能出现奇怪的重复条目,或者传输请求被两边同时收到。
App Store 里有一条老评论(2022 年)专门提到过 Windows 上双击启动两个 LANDrop 实例、导致传输不可预测的情况。
LANDrop 为什么不做单实例锁定
LANDrop 从源码上看没有做严格的单实例锁定——它不像很多桌面软件那样启动前先检查"是否已有实例在跑、如果有就激活那个实例然后退出自己"。这可能是一个有意的设计选择:LANDrop 的桌面端体积很小、启动速度很快,开发者可能认为不做锁更简洁。
怎么避免
- 养成习惯:启动 LANDrop 后先看系统托盘图标里是不是已经有一个了——如果有就不重复开;
- 如果不小心开了两个:把第二个实例关掉(任务管理器里找两个
LANDrop.exe,保留一个、结束另一个)。
端口号能不能改
LANDrop 从 v0.4.0 起就支持在设置里手动配置监听端口——如果你的机器上某个默认端口被其他应用占用,可以换个端口试试。具体端口值和配置入口因版本而异,以实际运行时的设置页显示为准。
WSL / Docker 里额外注意
如果你在 WSL 或 Docker 容器里跑 LANDrop,端口冲突概率更高(因为容器有自己的端口映射)。这种情况下要么确保只开一个实例,要么用 --network=host 让容器直接用宿主机网络,避免端口映射层的额外复杂度。