一个跨平台的、无需注册的、支持文件传输的局域网聊天软件。
- 🚀 无需注册 - 自动生成随机用户名,可随时修改
- 💻 跨平台支持 - Linux 桌面端、Windows 桌面端、Android App、Web 端
- 🔍 自动发现 - 基于 UDP 广播的局域网设备自动发现
- 💬 实时聊天 - 支持文本消息和文件传输
- 📁 文件传输 - 支持大文件传输,可设置自动接收
- 💾 历史记录 - SQLite 数据库保存聊天记录
- 🌐 Web 端 - 可部署到无图形界面服务器
- 后端: Rust + Tauri 2.0
- 前端: 原生 HTML + CSS + JavaScript
- 数据库: SQLite (sqlx)
- 网络: UDP 广播 + TCP 传输
- Web 服务器: Axum
paru -S lanchat-binhttps://github.com/cap153/LANChat/releases
前置要求:
https://v2.tauri.app/start/prerequisites/
# 桌面端
cargo tauri build --bundles deb
cargo tauri build --bundles rpm
# apk
cargo tauri android build --target aarch64
./sign-apk.sh
# windows桌面端
cd src-tauri
cargo xwin build --release --bin lanchat --target x86_64-pc-windows-msvc
# Web 端(精简版,无 GUI 依赖)
cd src-tauri
cargo build --release --bin lanchat-web --features web --no-default-features
cargo build --no-default-features --features web --release --target x86_64-pc-windows-gnu # windows网页端也可以使用 Makefile 一键构建:
make all # 构建测试过的所有平台
make deb # Linux .deb
make rpm # Linux .rpm
make apk # Android APK(自动签名)
make windows-desktop # Windows 桌面端(需要 cargo-xwin)
make web # Web 端 Linux
make web-windows # Web 端 Windows
make help # 查看帮助支持自定义css,文件名称随意,存储路径:
- Linux:
~/.config/lanchat/ - Windows:
%APPDATA%\.config\lanchat
可以参考内置的主题:https://github.com/cap153/LANChat/tree/main/src/css
桌面端和 Web 端共享同一个数据库:
- Linux:
~/.local/share/com.lanchat.app/lanchat.db - Windows:
%APPDATA%\com.lanchat.app\lanchat.db
settings- 用户配置(用户名、自动接收、保存路径等)messages- 聊天记录users- 局域网发现的用户(计划中)
- 自动生成随机用户名
- 用户改名功能(桌面端 + Web 端)
- 局域网设备发现(UDP 广播)
- 实时显示在线用户
- Web 端独立部署
- 桌面端和 Web 端共享数据库
- 设置页面
- 消息历史记录查询
- 主题切换功能
- Android 端适配
- 文本消息传输
- 文件传输功能
- Windows 端适配
- 单实例锁定功能
- 文件流式传输
- 根据系统内存动态调整文件分块大小
- 支持广播和组播
- Android 热点随机网段暴力覆盖
- Web 端文件消息点击直接下载
- 桌面端文件消息点击打开所在路径
- Android 端接收其他应用分享的文件并发送
- Android 端文件消息点击分享到其他应用
- 桌面端、Web 端支持拖拽文件发送
- 桌面端支持粘贴文件发送(零拷贝,Wayland 优先)
- Web 端支持粘贴文件发送
- 图片消息自动预览
- 存在未读消息时红点标注
- 历史消息懒加载(滚动时触发加载历史消息)
- 删除历史聊天记录
- Android 端文件消息点击打开
- Android 端发送图片预览(权限未过期时生效)
- 重复文件智能去重(接收端存在文件相同且完整直接引用,文件不同自动重命名)
- Android 端三大金刚键自动缩进
- 消息时间加上年月
- 聊天室功能
- 新消息系统通知(linux使用notify,windows使用powershell)
- 更换默认图标
- 手动接收文件
- 文件重新下载
- 在服务器上运行(不指定参数将默认使用
8888端口):
lanchat-web --port 8888- 配置防火墙示例:
sudo ufw allow 8888/tcp
sudo ufw allow 8888/udpLANChat/
├── src/ # 前端代码
│ ├── css/
│ │ └── style.css # 样式文件
│ ├── js/
│ │ ├── api.js # API 封装
│ │ ├── app.js # 应用逻辑
│ │ └── ui.js # UI 交互
│ └── index.html # 主页面
├── src-tauri/ # 后端代码
│ ├── src/
│ │ ├── main.rs # 桌面端入口
│ │ ├── server_main.rs # Web 端入口
│ │ ├── lib.rs # 库入口
│ │ ├── commands.rs # Tauri 命令
│ │ ├── db.rs # 数据库逻辑
│ │ ├── models.rs # 数据模型
│ │ ├── utils.rs # 工具函数
│ │ ├── web_server.rs # Web 服务器
│ │ └── network/ # 网络模块
│ │ ├── discovery.rs # 设备发现
│ │ ├── protocol.rs # 协议定义
│ │ └── transfer.rs # 文件传输
│ ├── capabilities/ # Tauri 权限配置
│ ├── permissions/ # 自定义权限
│ └── Cargo.toml
├── AGENTS.md # 开发计划和进度
└── README.md # 本文件
欢迎提交 Issue 和 Pull Request!
MIT License
如果你觉得这个项目对你有帮助,可以请作者喝杯咖啡 ☕️
