PROJECT · N° 02 · 桌面应用
LanNook
在同一局域网里,用手机浏览器和电脑互传文件。
- 版本
- v26.2.1 原名 LYNQO
- 许可
- GPL-3.0
- 平台
- Windows · macOS · Linux
- 更新
- 2026-07-27
电脑运行 LanNook → 手机扫码 → 浏览器内直接互传
它解决什么
§ 01文件就在手机或身边电脑上,只想直接送到另一台设备。
常见的传文件方式要么依赖云盘中转、要么要求双方安装同一个 App、要么需要注册账号。如果只是把一张截图从手机挪到电脑、把一个安装包从电脑发到手机,这些前置成本显得过重。
LanNook 的做法很直接:电脑运行程序后,在局域网内提供一个二维码和地址;手机用自带浏览器打开,就能双向选择文件和目标设备。官方发行版不会把文件上传到公共云盘,数据只在你自己的局域网里流动。
前提:电脑和手机需连接同一个局域网(同一路由器 / 同一 Wi-Fi)。
第一次使用
§ 02电脑启动 LanNook
打开桌面端程序,主界面确认状态为 运行中。此时程序已在局域网内监听服务,等待设备接入。
点击"连接设备"
在电脑端点击 连接设备,界面会展示二维码和局域网地址。手机用自带浏览器扫描二维码,或手动在地址栏输入地址即可打开传输页面。
审批接入请求
新设备默认会弹出接入请求。你可以选择 仅本次允许 或 信任此设备。被信任的设备下次接入时不再重复询问。
选文件并查看进度
在手机或电脑上选择文件和目标设备,发起传输。到 传输中心 查看进行中与已完成的任务进度,支持多文件并行。
目前可以做什么
§ 03浏览器端运行
手机无需安装任何 App,用系统自带浏览器打开页面即可使用全部传输功能。
// no app required双向传文件
手机到电脑、电脑到手机,两个方向都可以发起传输,自由选择目标设备。
// bidirectional传输中心
集中查看所有进行中与已完成的传输任务,掌握进度与状态,支持多文件并行。
// transfer hub512KiB 分块上传
大文件按 512KiB 分块上传,单块失败自动重试,提升弱网环境下的传输可靠性。
// 512KiB chunksSHA-256 指纹
传输完成后对文件计算 SHA-256 指纹校验,确保送达的文件与源文件逐字节一致。
// sha-256 verifySQLite 本地存储
设备信任记录、传输历史等数据存储在本地 SQLite 数据库,不上传任何外部服务器。
// sqlite localmDNS 发现
通过 mDNS 在局域网内自动发现运行 LanNook 的设备,减少手动输入地址的步骤。
// mdns discovery系统托盘
程序最小化到系统托盘常驻后台,关闭窗口不退出服务,随时等待设备接入。
// system tray开机自启
支持设置开机自动启动,开机即就绪,无需每次手动打开程序。
// autostart签名更新
程序内置更新检查,新版本通过签名校验后自动推送,保证更新包来源可信。
// signed update安全边界
§ 05新设备默认需审批
任何新设备首次接入时,电脑端默认弹出审批请求。可选择 仅本次允许 或 信任此设备,被信任的设备后续不再询问。
二维码含配对参数
二维码内嵌的地址携带配对参数,扫码即建立关联会话,降低手动输入地址时被旁人窥探的风险。
局域网明文传输
HTTP 与 WebSocket 均为明文通信,未使用 TLS。这是局域网点对点传输的取舍 — 不引入证书管理复杂度,但请确保只在可信网络中使用。
默认不上传公共云
官方发行版的设计原则是数据不离开局域网。文件在设备间直接传输,不经由任何公共云服务器中转或存储。
代码位置
§ 06| 目录 | 职责 | 主要语言 | 占比 |
|---|---|---|---|
| src/ | Vue 用户界面、传输中心页面、组件与交互逻辑,运行于 Tauri WebView 内。 | Vue TypeScript | ~57% |
| src-tauri/ | Rust 后端命令、HTTP/WebSocket 服务、文件分块、SHA-256 校验、SQLite 存储、mDNS 发现、托盘与自启等系统级能力。 | Rust | ~41.5% |
完整源码与构建说明见仓库 README:github.com/zep4yrs/lannook
互动演示
§ 07 · 模拟※ 以上为前端模拟演示,所有交互均在浏览器本地完成,不涉及真实网络传输。视觉风格与交互流程基于真实 LanNook 桌面端应用还原。
拿来就用
电脑装一次,手机扫码即用。开源、跨平台、不上云 — 你的文件只在你自己的局域网里走。
GPL-3.0 · Rust + Vue + Tauri 2 · v26.2.1