LYNQO:在局域网里,把手机和电脑真正连起来
LYNQO:在局域网里,把手机和电脑真正连起来
手机和电脑之间传文件,通常有几种办法:插数据线、打开网盘,或者安装某个第三方工具。它们都能完成任务,但也各有麻烦。数据线需要随身带着,网盘要经过上传和下载,第三方服务则会让人多想一步——文件到底经过了哪些服务器?
LYNQO 就是从这个问题开始做的。
它是一款开源的局域网文件传输工具,主要用于手机和电脑之间的直接传输。电脑端启动服务后,手机通过浏览器连接,双方在同一个可信网络中完成文件交换,不需要注册云端账号,也不需要把文件上传到公共存储服务。
我为什么想做 LYNQO
很多时候,我们只是想把手机里的一组照片传到电脑,或者把电脑上的一个压缩包临时发到手机上。这样的需求并不复杂,却经常要经过登录、上传、等待同步,再在另一台设备上下载一遍。
如果两台设备就在同一个房间里,文件却还要绕到云端,多少有些多余。
LYNQO 的做法是把范围缩小:它不试图解决远程访问,也不把自己包装成云盘,而是专注于同一个局域网中的设备连接和文件传输。电脑负责提供服务,手机负责通过浏览器访问,文件在两台设备之间传递。
这也决定了它的使用边界:手机和电脑需要处在同一个可互相访问的网络中,公共 Wi-Fi、访客网络或开启了客户端隔离的网络环境,可能无法正常连接。
从扫码到传输
启动 LYNQO 后,电脑端会显示连接二维码和局域网地址。手机可以直接扫码,也可以在浏览器中输入完整地址。这里不能使用 localhost 或 127.0.0.1,因为这两个地址指向的是手机自身,而不是电脑。
手机发起连接时,电脑端不会自动放行,而是会显示一个设备授权请求。用户可以查看设备名称、平台和连接状态,然后选择只允许这一次,或者将设备加入信任列表。
这个步骤看起来多了一层确认,但它很有必要。局域网并不意味着绝对安全,同一个网络中的设备并不一定都属于自己。由电脑端明确决定哪些设备可以接入,至少能避免“发现到设备就直接开放”的问题。
对于自己的常用手机,可以选择信任设备,之后减少重复授权;临时使用的设备则可以只授权当前连接,传输结束后不保留长期权限。
文件传输不局限于一个方向
LYNQO 支持手机向电脑发送文件,也支持电脑向手机发送文件。
电脑端可以把文件拖入页面,或者通过文件选择器添加。手机端则直接调用浏览器的文件选择功能,照片、视频、文档和压缩包都可以选择。整个过程不需要额外安装移动端 App,手机只需要有一个现代浏览器。
传输任务会进入统一的“传输中心”。这里可以查看等待中的任务、正在传输的文件、已经完成的记录,以及失败或取消的任务。早期把这些状态分散在不同页面时,查看起来比较麻烦,后来把它们合并到一个中心里,使用时会更连贯。
传输过程中,页面会显示进度、已传输大小、实时速度和预计剩余时间。对于几张照片来说,这些信息可能不是必需的,但在发送几个 GB 的视频或压缩包时,用户至少能知道任务是在正常进行,还是已经停滞。
为什么还要做文件校验
传输完成并不代表文件一定没有问题。网络抖动、连接中断或存储过程中的异常,都可能导致接收文件不完整。
LYNQO 支持使用 SHA-256 对文件进行完整性校验。传输结束后,用户可以展开查看校验值,用来确认发送端和接收端的文件是否一致。
这项功能只负责确认文件有没有变化,不负责判断文件是否安全,也不能代替杀毒软件和备份系统。它解决的是“文件有没有传坏”这个问题,而不是“文件是不是可信来源”。
数据尽量留在本地
设备记录、授权状态和传输历史会保存在运行 LYNQO 的电脑本地,文件传输也以局域网连接为主。项目没有要求用户注册账号,不把公共云端作为默认中转站。
这对传输私人照片、工作文档或内部资料的人来说比较方便,但它并不意味着可以忽略网络安全。使用 LYNQO 时,仍然应该确认自己连接的是可信网络,也不要随意授权陌生设备。
换句话说,LYNQO 减少的是对第三方云服务的依赖,并不会替用户承担网络环境本身的风险。
桌面端和移动端各自负责什么
LYNQO 的桌面端使用 Tauri 2 构建,负责启动局域网服务、管理设备授权、保存本地记录和处理文件操作。手机端主要通过浏览器访问移动页面,因此不需要单独维护一个 Android 或 iOS 客户端。
桌面应用支持 Windows、macOS 和 Linux,也可以放到系统托盘中运行。用户可以在设置里决定关闭窗口后直接退出,还是继续在后台提供服务。应用还提供自动更新入口,后续版本会通过签名更新机制发布。
界面支持中文和英文切换,首次启动时会显示一个简短的使用引导,说明如何启动服务、扫描二维码、在电脑上授权设备以及开始传输。
技术实现
前端使用 Vue 3、TypeScript、Vite 和 Pinia,桌面端采用 Rust 和 Tauri 2。局域网服务基于 Axum 和 Tokio,设备发现使用 mDNS,实时状态通过 WebSocket 推送,本地数据保存到 SQLite 中。
文件传输部分包含分片处理、断点续传和完整性校验。这样的架构让界面和桌面能力分工比较清楚:Vue 负责交互,Rust 负责本地服务、文件系统和跨平台桌面功能。
项目目前按 GPL-3.0-only 许可证开源,源代码、构建流程和发布文件都可以在 GitHub 上查看。
如何安装
从 GitHub Releases 下载对应系统的安装包:
- Windows:
.exe、.msi - macOS Intel:
.dmg - macOS Apple Silicon:
.dmg - Linux:
.AppImage、.deb
git clone https://github.com/by-fengqiao/lynqo.git
cd lynqo
npm ci
npm run tauri devnpm run tauri build它适合什么,不适合什么
LYNQO 适合家庭、工作室和办公室等可信局域网环境,尤其适合临时传照片、视频、文档和压缩包。它不需要云端账号,连接流程也比注册一个新服务更快。
但它不是云盘,也不是远程备份工具。电脑关机后,手机无法继续连接;两台设备不在同一个网络时,也不能指望它像互联网服务一样自动建立连接。重要文件仍然应该使用独立的备份方案保存。
我更愿意把 LYNQO 看成一个“附近设备传文件”的工具,而不是一个试图覆盖所有场景的平台。它只处理局域网内的连接和传输,剩下的事情交给用户自己决定。
写在最后
做 LYNQO 的初衷并不复杂:当手机和电脑已经在同一个房间、同一个网络里时,传一个文件不应该还要先绕到云端。
打开电脑端,手机扫码,电脑确认设备,然后开始传输。这是我希望它提供的基本体验。用户可以看到设备是谁、权限是否通过、文件传到哪里,以及任务有没有真正完成。
项目还在继续完善。如果你在使用过程中遇到问题,可以在 GitHub 提交 Issue;如果有改进想法,也欢迎提交 Pull Request。