LocalSend:跨平台局域网文件与消息传输工具(AirDrop 开源替代方案)
LocalSend 是一款免费开源的跨平台应用,通过本地网络在附近设备之间安全地传输文件和消息,无需互联网连接,也不依赖第三方服务器。它基于 REST API 与 HTTPS 加密通信,TLS/SSL 证书在每台设备上即时生成,支持 Windows、macOS、Linux、Android、iOS 与 Fire OS。
社区作者 · zZz
它解决什么问题
LocalSend 是一个跨平台应用,目标是作为 AirDrop 的开源替代方案,让同一局域网内的设备之间安全地收发文件与消息。
核心特点:
- 使用 REST API 与 HTTPS 加密在设备之间通信;TLS/SSL 证书在每台设备上即时(on the fly)生成,以保证安全性。
- 不依赖外部服务器,不需要互联网连接,也不依赖第三方服务器,因此速度快、可靠性高。
- 跨平台:覆盖 Windows、macOS、Linux、Android、iOS、Fire OS。
- 官方建议从应用商店或包管理器下载安装,因为应用本身不带自动更新。
配图说明:配图 2(iPhone screenshot)和配图 3(PC screenshot)展示了移动端与桌面端的界面形态;配图 4 是项目的依赖层级(Dependency Hierarchy)图;配图 5 是 Weblate 多语言翻译状态图;配图 6 是贡献者列表图;配图 1 为赞助商图标(浏览器测试支持方)。
协议与端口:客户端之间通过 LocalSend Protocol 通信,默认端口为 53317,入站需放通 TCP 与 UDP。项目另提供基于 LocalSend Protocol v2 的终端客户端 LocalSend CLI。
社区与贡献:项目提供 Weblate 平台用于翻译管理,也可 fork 仓库后手动修改 app/assets/i18n 目录下的 _missing_translations_<locale>.json 或 strings_<locale>.i18n.json;以 @ 装饰的字段不属于翻译范围,仅用于提供上下文信息。Bug 修复可直接提交带清晰说明的 Pull Request,功能改进建议先创建 issue 讨论。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
一、下载与安装(官方建议优先使用应用商店或包管理器,因为 LocalSend 不带自动更新) Windows:Winget、Scoop、Chocolatey、EXE Installer、Portable ZIP。Windows 二进制文件已签名,详见代码签名策略。 注意:来源提到存在非官方 MSIX 预览版,可从 localsend.ob-buff.dev 试用最新提交构建,稳定性不作保证,所有自定义改动均列在该站点上。
macOS:App Store、Homebrew、DMG Installer。 Linux:Flathub、Nixpkgs、Snap、AUR、TAR、DEB、AppImage。 Android:Play Store、F-Droid、APK。 iOS:App Store。 Fire OS:Amazon。
二、兼容性(最低版本)
- Android:5.0
- iOS:12.0
- macOS:11 Big Sur;如需在更旧设备上运行,来源提示可使用 OpenCore Legacy Patcher 2.0.2(见 issue #1005)
- Windows:10;最后一个支持 Windows 7 的版本是 v1.15.4,未来可能为新版本提供 Windows 7 向后移植
- Linux:无固定版本(N.A.);依赖:Gnome 需要 xdg-desktop-portal 与 xdg-desktop-portal-gtk,KDE 需要 xdg-desktop-portal 与 xdg-desktop-portal-kde
三、防火墙与网络设置 多数情况下 LocalSend 开箱即用。若发送或接收异常,需要配置防火墙允许其在局域网内通信:
Linux 示例:
同时确认路由器已关闭 AP 隔离(AP isolation);该选项通常默认关闭,但部分路由器(尤其是访客网络)可能已启用。
- 入站:TCP、UDP,端口 53317,动作=允许
- 出站:TCP、UDP,任意端口,动作=允许
- ufw:sudo ufw allow 53317
- firewalld:sudo firewall-cmd --permanent --add-port=53317/tcp,然后 sudo firewall-cmd --permanent --add-port=53317/udp,最后 sudo firewall-cmd --reload
四、便携模式(Portable Mode,自 v1.13.0 引入) 在可执行文件所在目录中创建一个名为 settings.json 的文件,该文件可以为空;应用将改用该文件存储设置,而不再使用默认位置。
五、启动时隐藏(自 v1.15.0 更新) 使用 --hidden 参数可以让应用仅以托盘方式启动,例如:localsend_app.exe --hidden。 在 v1.14.0 及更早版本中,如果设置了自启动标志且启用了隐藏设置,应用会以隐藏方式启动。
六、从源码编译运行(开发环境准备与首次运行)
注意:LocalSend 当前要求较旧的 Flutter 版本(在 .fvmrc 中指定),所需版本与系统全局安装版本不一致可能导致构建问题。为保持开发环境一致,项目使用 fvm 管理 Flutter 版本;安装 fvm 后,请把 flutter 命令替换为 fvm flutter。
- 安装 Flutter(直接安装或通过 fvm 安装,所需版本见 .fvmrc)
- 安装 Rust
- 克隆 LocalSend 仓库
- 运行 cd app 进入 app 目录
- 运行 flutter pub get 下载依赖
- 运行 flutter run 启动应用
七、命令行界面(LocalSend CLI,基于 LocalSend Protocol v2) 运行 localsend-cli --help 查看所有可用选项和快捷键。 发送命令可接一个或多个文件、目录,或两者的混合: localsend-cli send report.pdf photo.jpg ./project-backup 该命令会打开已发现设备列表,交互式选择目标设备后按 Enter 开始传输。
如不想使用交互式设备列表,可通过别名或 IP 地址直接指定目标: localsend-cli send --to " Cute Tomato " report.pdf localsend-cli send --to 192.168.27.26 report.pdf 别名必须能唯一标识已发现的设备;IP 地址会通过 HTTPS 直接在 LocalSend 默认端口 53317 上探测。
目录会被递归收集,所选根目录名称与嵌套路径在接收端会被保留;空目录不会被发送,因为 LocalSend 传输的是文件条目而非目录条目。
八、构建命令(仅供维护者使用,需在 app 目录下执行)
- Android 传统 APK:flutter build apk
- Android Google Play AppBundle:flutter build appbundle
- iOS:flutter build ipa
- macOS:flutter build macos
- Windows 传统构建:flutter build windows
- Windows 本地 MSIX 应用:flutter pub run msix:create
- Windows 商店可用包:flutter pub run msix:create --store
- Linux 传统构建:flutter build linux
- Linux AppImage:appimage-builder --recipe AppImageBuilder.yml
- Linux Snap:见 localsend/snap/README.md 中的说明
九、常见问题(Troubleshooting)
- 设备不可见(任意平台/任意平台):确认关闭路由器 AP 隔离;若开启,设备之间连接会被禁止。
- 设备不可见(接收端为 Windows):把网络配置为“专用/私有”网络,Windows 在公共网络下限制更严格。
- 设备不可见(发送端为 macOS、iOS):可在系统设置“隐私”中尝试切换“本地网络”权限。
- 设备不可见(任意平台):若启用了 VPN,请允许本地/LAN 流量或临时关闭 VPN,部分 VPN 默认阻断局域网连接。
- 设备不可见(任意平台):使用手动发送直接输入接收方 IP 地址;若可行,将该设备加入收藏以便直接探测。
- 传输速度过慢(任意平台):使用 5 GHz 频段;在两端设备上关闭加密。
- 传输速度过慢(接收端为 Android):已知问题,参见 flutter-cavalry/saf_stream#4。

