资讯动态

LocalSend 跨平台局域网文件共享实战指南:网络配置、隐藏启动参数与源码级工作原理

发布时间:2026/9/6 19:14:54 来源:尧图企业网站定制
LocalSend 跨平台局域网文件共享实战指南网络配置、隐藏启动参数与源码级工作原理【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsendLocalSend 是一个免费、开源的跨平台文件传输应用允许设备在同一局域网内无需互联网即可安全分享文件与消息。本文以仓库中高棉语版说明文档 support/readme/README_KM.md其内容与主 README 保持同步为主体完整覆盖下载渠道、防火墙端口配置、便携模式、--hidden启动参数等实操要点并结合 Rust 核心库与 Flutter 应用源码深入解析设备发现、自签名 HTTPS 证书与设置持久化的实现细节帮助读者既能正确部署 LocalSend也能理解其底层工作机制。项目定位不依赖外部服务器的局域网传输LocalSend 是一个跨平台应用通过 REST API 与 HTTPS 加密实现设备之间的安全通信。与其他依赖外部服务器的传输类应用不同LocalSend 既不需要互联网连接也不需要任何第三方中继服务器——数据全程在局域网内点对点传输这使得它成为本地文件共享场景中快速且可靠的解决方案参见 support/readme/README_KM.md 的About部分与主文档 README.md。从源码结构看项目采用三层架构支撑这一目标核心协议层packages/core 是 Rust 编写的核心库包含设备发现discovery、HTTPS 服务器与客户端http、加密crypto、组播multicast与 WebRTC 模块Flutter 应用层app 目录是基于 Flutter 的跨平台前端含 pubspec.yaml通过 packages/localsend_isolates 以 Rust isolate 方式桥接核心库CLI 工具cli 提供命令行收发文件能力与 GUI 共享同一套协议实现。仓库内还维护了 19 种语言的 README 翻译位于 support/readme高棉语版ភាសាខ្មែរ即本文依据的 support/readme/README_KM.md。下载与安装渠道选择与平台兼容性官方建议从应用商店或包管理器安装因为应用本身没有自动更新功能。各平台可用渠道如下引自 support/readme/README_KM.md 的 Download 表格具体安装包地址以仓库 releases 页面为准WindowsmacOSLinuxAndroidiOSFire OSWingetApp StoreFlathubPlay StoreApp StoreAmazonScoopHomebrewNixpkgsF-DroidChocolateyDMG 安装包SnapAPK 直装EXE 安装包AURPortable ZIPTARDEBAppImage平台兼容性与依赖原文档 Compatibility 表格完整保留平台最低版本备注Android5.0-iOS12.0-macOS11 Big Sur旧系统需借助 OpenCore Legacy Patcher 2.0.2参考 issue #1005Windows10最后一个支持 Windows 7 的版本是 v1.15.4未来可能有新版本回移支持LinuxN.A.GNOME 依赖xdg-desktop-portal与xdg-desktop-portal-gtkKDE 依赖xdg-desktop-portal与xdg-desktop-portal-kde网络配置防火墙端口与 AP 隔离大多数情况下 LocalSend 开箱即用但如果发送或接收文件受阻需要检查两处网络配置。防火墙规则原文档给出的标准防火墙配置表如下应直接照此配置流量类型协议端口动作入站IncomingTCP, UDP53317允许出站OutgoingTCP, UDP任意允许这个 53317 端口在源码中是硬编码的默认值CLI 模块在 cli/src/storage/config.rs#L34 中定义const DEFAULT_PORT: u16 53317;配置文件注释示例见 cli/src/storage/config.rs#L27cli/src/main.rs#L22 也明确标注HTTP 服务器端口默认取自 config.toml否则为 53317。启动后 CLI 的横幅会按该端口拼接直连地址如https://192.168.0.1:53317可参考 cli/src/banner.rs#L88-L124 的测试用例了解 IPv4/IPv6 地址的渲染规则IPv6 会带中括号。关闭路由器的 AP 隔离确认路由器已关闭 AP isolationAP 隔离。该选项通常默认关闭但部分路由器尤其是访客网络 guest network可能默认开启——一旦开启设备之间的直接通信会被路由器禁止表现为互相看不到对方设备。高级用法Portable Mode 与隐藏启动Portable Mode便携模式自v1.13.0起支持便携模式在可执行文件executable所在的目录中创建一个名为settings.json的文件该文件可以为空应用检测到它后便会改用该文件持久化所有设置而不再写入系统默认位置。这意味着把整个应用目录拷走即可连同偏好设置一起迁移。源码层面该功能由 app/lib/util/shared_preferences/shared_preferences_portable.dart 实现SharedPreferencesPortable继承自SharedPreferencesFile见 app/lib/util/shared_preferences/shared_preferences_file.dart其中buildSettingsPath第 44–50 行优先取Platform.resolvedExecutable的父目录拼接settings.json当可执行路径无法解析例如运行在 ImDisk 虚拟 RAM 盘上会触发TypeError时回退到当前工作目录并有visibleForTesting标注便于测试。隐藏启动--hidden自v1.15.0起若要启动时应用只驻留系统托盘而不显示主窗口使用--hidden参数例如localsend_app.exe --hidden需要注意版本差异在 v1.14.0 及更早版本中应用是否隐藏启动由autostart 已设置 隐藏启动选项被开启两个条件隐式决定v1.15.0 起改为显式监听--hidden命令行参数。这一行为变更记录于 app/assets/CHANGELOG.md#L157now listens to--hiddenparameter instead ofautostart。实现上参数常量startHiddenFlag --hidden定义在 app/lib/util/native/autostart_helper.dart#L9开启 autostart 时Linux 会将其写入.desktop自启动项的Exec行、Windows 会写入注册表启动键值autostart_helper.dart#L13-L48macOS 则调用原生登录项接口设置最小化启动。Linux 原生入口还会在 C 侧再次检查该参数以决定首窗口是否隐藏见 app/linux/my_application.cc#L27-L31。工作原理组播发现 设备级自签名 HTTPS原文档How It Works部分指出LocalSend 使用一种安全通信协议允许设备通过 REST API 相互通信所有数据经 HTTPS 安全传输TLS/SSL 证书在每台设备上即时本地生成无需任何外部 CA。协议细节的完整定义位于独立的 LocalSend Protocol 仓库仓库文档中给出的协议文档入口这里从源码印证其关键机制。设备发现UDP 组播发送端与接收端在局域网内互相发现依赖组播 UDP 广播实现在 packages/core/src/multicast模块基于tokio::net::UdpSocket构建组播套接字multicast/mod.rs#L20、multicast/socket.rs#L94-L154并通过receive_loop第 330 行起持续接收邻居设备的通告。发现的设备缓存与合并逻辑在 packages/core/src/discovery/store.rs其中第 274 行可见默认端口53317参与设备条目构造该机制正是前文防火墙表中要求放行 UDP 的原因——只开 TCP 会导致设备列表始终为空。安全通信RSA-2048 自签名证书与指纹识别每台设备的 HTTPS 身份由本地生成的自签名证书承载核心函数是 packages/core/src/crypto/cert.rs 中的generate_self_signed第 32–56 行其设计要点直接来自源码注释RSA-2048 密钥对与 Flutter 应用历史上在 Dart 侧生成的证书保持格式兼容证书CNLocalSend User且不带 SAN——对等设备纯粹依靠证书的 SHA-256 指纹相互识别证书名不携带身份信息有效期沿用 rcgen 默认1975–4096 天证书事实上永不过期、无需因时间原因轮换输出的SelfSignedCert结构同时包含 PEM 编码的私钥PKCS#8、公钥SPKI、自签名证书与指纹cert.rs#L9-L19。验证逻辑verify_cert_from_cert第 75 行起依次校验签名、时间有效性与如提供公钥匹配配合应用层的已配对设备机制CLI 侧持久化在 cli/src/storage/paired.rs保证重连同一设备时不会反复提示信任。此外仓库测试目录 packages/core/tests 中包含v2_tls_pinning.rsTLS 证书固定验证、multicast.rs组播发现等集成测试可作为上述机制可运行性的直接证据。从源码编译与本地开发Getting Started按 support/readme/README_KM.md 的 Getting Started 章节从源码运行 LocalSend 的步骤为安装 Flutter可直装也可使用 fvm版本要求见下文Clone LocalSend 仓库如需git clone https://gitcode.com/GitHub_Trending/lo/localsendcd app进入应用目录flutter pub get拉取依赖flutter run启动应用。Flutter 版本约束重要文档特别提醒——LocalSend 目前要求特定的 Flutter 版本原高棉语文档表述为较旧的 Flutter 版本安装问题往往源于本机全局 Flutter 版本与要求不一致。仓库在根目录的 .fvmrc 中固定了开发版本{ flutter: 3.41.9 }因此建议安装fvm后统一使用fvm flutter代替flutter执行所有命令fvm会按 .fvmrc 自动选用 3.41.9保证环境一致性。多平台编译脚本集中在 support/scripts如compile_android_apk.sh、compile_windows_msix_store.ps1等各平台的打包配置则分别位于 app/android、app/ios、app/macos、app/windows、app/linux 之下。翻译与贡献高棉语 README 本身即翻译贡献的成果。原文档 Contributing 章节给出两条路径推荐通过 Weblate 平台管理翻译LocalSend app 项目备选Fork 仓库后手工添加翻译。翻译文件位于 app/assets/i18n 目录编辑_missing_translations_locale.json缺失词条清单或strings_locale.i18n.json即可新增/更新译文。目录中每个语言既有完整词条文件如km.json、zh-CN.json也有对应的缺失清单如 _missing_translations_ko.json。仓库中还有自动化生成的 Dart 文案绑定app/lib/gen/strings_ko.g.dart 等以及 i18n 完整性测试 app/test/unit/i18n_test.dart 用于校验各语言翻译状态。一条明确的翻译规则原文加粗强调以开头的行是注释不要翻译——它们不参与任何运行时逻辑仅用于为译者提供文件说明或上下文。其他贡献方式修 Bug创建 pull request需清晰描述问题与修复方式改进建议先在 GitHub 提 issue 讨论必要性。更完整的贡献规范含分发渠道说明见 CONTRIBUTING.md。故障排查Troubleshooting原文档附带的排查表完整保留如下建议按现象 → 发送端平台 / 接收端平台 → 对策三列对照处理问题Platform发送Platform接收解决方案看不到设备任意任意确认路由器已关闭 AP-Isolation。若其开启设备间连接将被禁止。看不到设备任意Windows将当前网络类型设为专用Private。网络为公用时 Windows 限制更严格。看不到设备macOS, iOS任意可尝试在系统设置的隐私Privacy中切换本地网络Local Network权限。速度太慢任意任意改用 5 GHz 频段在两台设备上都关闭加密encryption。速度太慢任意Android已知问题根因在 Flutter 插件 saf_stream 的实现上游 issue #4。补充说明表中关闭加密指的是应用设置中可选的传输层加密选项LocalSend 的 HTTPS 始终启用此选项影响文件内容是否额外加密若网络环境不可信不建议关闭看不到设备问题可结合前文组播发现机制理解——绝大多数情况是 UDP 53317 被防火墙拦截或 AP 隔离开启所致。小结通过这篇指南读者应当能够正确选择各平台的安装渠道并理解 support/readme/README_KM.md 给出的兼容性边界按 TCP/UDP 53317 的标准规则配置防火墙并排除 AP 隔离使用settings.json启用 Portable Mode、用--hidden参数实现托盘静默启动并从 packages/core 源码理解 LocalSend组播 UDP 发现设备 设备级 RSA-2048 自签名 HTTPS 证书 SHA-256 指纹互认的核心安全模型最后按 .fvmrc 固定版本Flutter 3.41.9 fvm从源码编译并参与多语言翻译贡献。【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价