资讯动态

LocalSend 实战指南:本地文件分享的下载配置、防火墙设置与自签名证书协议解析

发布时间:2026/9/5 20:31:58 来源:尧图企业网站定制
LocalSend 实战指南本地文件分享的下载配置、防火墙设置与自签名证书协议解析【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsendLocalSend 是一款免费开源的跨平台文件共享应用允许你在局域网内安全地向附近设备传输文件和消息全程无需互联网连接。本文以官方仓库中的波兰语版 READMEsupport/readme/README_PL.md为主线完整覆盖下载渠道、兼容性矩阵、防火墙与路由配置、便携模式/后台启动等桌面高级用法并结合 Rust 核心库源码深入解析其默认端口 53317 与“设备上即时生成自签名证书”的安全机制帮助你在部署与排障时做到知其然更知其所以然。什么是 LocalSendLocalSend 是一个跨平台应用设备之间通过REST API进行通信所有数据均经由HTTPS 加密传输。与依赖外部中转服务器的即时通讯方案不同LocalSend 不需要互联网连接也不经过任何第三方服务器因此本地传输速度快且稳定——文件只在你自己的局域网内流动。项目采用“Flutter 前端 Rust 核心”的双语言架构应用 UI 层位于 app/lib而协议、加密、发现与 HTTP 服务等核心能力沉淀在 Rust 包 packages/core 中由 packages/localsend_isolates 通过 Flutter Rust Bridge 桥接给上层应用。仓库中有一份模块依赖层级图可作为理解整体结构的参考下载与安装由于应用本身不具备自动更新能力官方建议优先从应用商店或系统包管理器安装以便后续获得更新。各平台可用的分发渠道如下继承自波兰语版 README 的分发表WindowsmacOSLinuxAndroidiOSFire OSWingetApp StoreFlathubGoogle Play 商店App StoreAmazon 商店ScoopHomebrewNixpkgsF-DroidChocolateyDMG 安装包最新 ReleaseSnapAPK最新 ReleaseEXE 安装包最新 ReleaseAUR便携 ZIP最新 ReleaseDEB / TAR / AppImage最新 ReleaseWindows 平台的二进制发行件经过代码签名签名策略见 CODE_SIGNING.md。兼容性矩阵平台最低版本备注Android5.0-iOS12.0-macOS11 Big Sur更老的 macOS 可尝试 OpenCore Legacy Patcher 2.0.2Windows10最后支持 Windows 7 的版本是 v1.15.4未来可能推出新版回移LinuxN.A.依赖Gnome 需要xdg-desktop-portal与xdg-desktop-portal-gtkKDE 需要xdg-desktop-portal与xdg-desktop-portal-kde网络配置防火墙与 AP 隔离绝大多数情况下 LocalSend 安装后即可直接工作。但如果发送或接收文件失败通常需要在防火墙上放行 LocalSend 的本地网络通信流量类型协议端口动作入站TCP, UDP53317允许出站TCP, UDP任意允许这个53317 端口并非文档约定俗成的数字而是写死在代码中的默认值Flutter 侧常量定义于 packages/localsend_isolates/lib/constants.dartconst defaultPort 53317;独立 CLI 工具中同样如此默认端口常量声明在 cli/src/storage/config.rsconst DEFAULT_PORT: u16 53317;CLI 的 cli/src/main.rs 也注明端口优先级为“命令行参数 config.toml 53317”。因此放行规则只需针对该端口的 TCP/UDP 双向流量。除了防火墙还需要确认路由器上的 AP 隔离客户端隔离已关闭。该选项默认通常为关闭状态但部分路由器尤其是访客网络会默认开启一旦开启同一 SSID 下的设备之间将被禁止互访LocalSend 的设备发现自然失效。桌面端进阶用法便携模式Portable Mode自 v1.13.0 起支持。使用方法很简单在与可执行文件同一目录下创建一个名为settings.json的文件可以为空文件应用就会改用该文件存储设置而不是写入系统默认位置注册表/用户配置目录方便你用 U 盘随身携带整套配置。从源码看这一行为由 app/lib/util/shared_preferences/shared_preferences_portable.dart 实现SharedPreferencesPortable继承自SharedPreferencesFile其路径由buildSettingsPath计算——即“可执行文件所在目录 settings.json”。值得注意的是_resolveExecutable()对Platform.resolvedExecutable的读取做了 try-catch 保护以规避某些虚拟磁盘如 ImDisk RAM 盘上读取该属性会直接抛异常导致应用崩溃的问题解析失败时会回退到当前工作目录。在系统托盘后台启动自 v1.15.0 起使用--hidden标志即可让应用仅启动到系统托盘而不显示主窗口localsend_app.exe --hidden该标志的常量定义在 app/lib/util/native/autostart_helper.dartconst startHiddenFlag --hidden;界面设置项中对应的文案为 “Autostart: Start hidden”见 app/lib/gen/strings_en.g.dart。在 v1.14.0 及更早版本中行为有所不同只有当autostart标志已设置且“隐藏启动”设置项开启时应用才会在后台启动。工作原理REST API 与即时生成的自签名证书README 指出LocalSend 使用安全的通信协议设备之间通过 REST API 交互TLS/SSL 证书是在每台设备上即时on the fly生成的。这句话在 Rust 核心库中有直接对应——packages/core/src/crypto/cert.rs 中的generate_self_signed()生成一套完整的设备身份RSA-2048密钥对私钥以 PKCS#8 PEM 编码、公钥以 SPKI PEM 编码一张自签名证书CN 固定为LocalSend User不携带 SAN——因为对端设备之间完全依靠证书指纹而非域名互相识别证书的 SHA-256 指纹按大写十六进制编码见 fingerprint_from_cert_der即你在应用界面上看到的设备指纹格式有效期取 rcgen 默认值1975–4096 年意味着证书实际上永不过期无需因时间原因轮换。配套的verify_cert_from_pem/verify_cert_from_der负责在握手时校验对方证书依次检查时间有效性、公钥是否匹配若提供、签名是否有效任一失败都会给出对应的错误“Time validity error” / “Public key mismatch” / “signature verification error”。同文件内的单元测试cert.rs#L157-L240分别构造了签名被篡改、公钥不匹配、证书过期三种坏样本来验证这三条失败路径是理解其校验逻辑的最佳示例。承载 REST API 的 HTTP 服务端实现位于 packages/core/src/http/server包含内部服务、v2/v3 版本端点以及面向浏览器下载的 web 端点协议细节的官方规范在独立的 protocol 仓库中维护主 README 有外链指引本文不再重复外部链接。从源码编译从源码构建 LocalSend 的步骤继承自波兰语版 README 的 “Pierwsze kroki”安装 Flutter——建议直接用 fvmFlutter Version Manager安装所需版本见 .fvmrc克隆 LocalSend 仓库执行cd app进入app目录执行flutter pub get下载依赖执行flutter run启动应用。注意LocalSend 当前要求一个较旧的 Flutter 版本由 .fvmrc 指定当前仓库锁定为3.41.9。系统全局安装的 Flutter 版本与要求版本不匹配是导致编译失败的最常见原因。为保持开发一致性项目使用 fvm 管理版本安装 fvm 后请统一用fvm flutter代替flutter命令。补充一点波兰语版 README 未列出、但英文主 README 提到的前提若需要构建 Rust 核心isolates部分还需安装 Rust 工具链仓库的 rust-toolchain.toml 锁定 channel 为1.97.1并附带 clippy。以下为各平台的构建命令继承自主 README 的 Building 章节供维护者参考均在app目录下执行Android传统 APKflutter build apk用于 Google Play 的 AppBundleflutter build appbundleiOSflutter build ipamacOSflutter build macosWindows传统构建flutter build windows本地 MSIX 应用包flutter pub run msix:create面向商店的 MSIXflutter pub run msix:create --storeLinux传统构建flutter build linuxAppImageappimage-builder --recipe AppImageBuilder.ymlSnap 的打包说明位于独立的 localsend/snap 仓库主 README 中有外链此处不重复。参与贡献项目欢迎任何形式的贡献主要途径如下。翻译推荐通过 Weblate 平台管理翻译主 README 中有平台入口外链也可以自行 fork 仓库手动添加。翻译文件位于 app/assets/i18n 目录编辑_missing_translations_locale.json或strings_locale.i18n.json来新增或更新译文。仓库中当前已有 60 余个语言的翻译 JSON 文件如pl.json、zh-CN.json等以及配套的_missing_translations_*.json缺漏清单。注意以开头的字段不需要翻译——它们不会在应用中使用仅用于说明文件信息或为译者提供上下文。缺陷修复与功能改进缺陷修复发现问题后请提交一个附带清晰问题描述与修复说明的 pull request功能改进如果你有改进 LocalSend 的想法请先创建 issue 讨论该改进的必要性。更完整的规范见 CONTRIBUTING.md。故障排查继承自波兰语版 README 的排障速查表按“发送端平台 / 接收端平台”定位问题问题平台发送端平台接收端解决方案设备不可见任意任意确认已关闭路由器上的 AP 隔离开启时设备间连接会被禁止设备不可见任意Windows确认网络类型被设置为“专用private”网络Windows 对“公用”网络限制更严格设备不可见macOS、iOS任意可尝试在系统设置的“隐私”中切换“本地网络”权限开关速度过慢任意任意改用 5 GHz 频段在两台设备上同时关闭加密速度过慢任意Android已知问题源于 SAF 流读取的底层限制主 README 中附有问题编号外链若以上均不奏效建议按顺序核对三件事防火墙是否放行了 53317 端口的入站 TCP/UDP、路由器 AP 隔离是否关闭、两端是否处于同一二层网络同 SSID 且未开启访客隔离。延伸阅读波兰语版 README 原文support/readme/README_PL.md英文主 README含分发渠道与构建细节README.mdRust 核心库packages/core/src/lib.rs加密模块 packages/core/src/crypto/mod.rs发现模块 packages/core/src/discovery/mod.rsDart 应用入口app/lib/main.dart更新日志CHANGELOG.md【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价