# OfflineChat **Repository Path**: du1in9/offline-chat ## Basic Information - **Project Name**: OfflineChat - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-06-06 - **Last Updated**: 2026-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OfflineChat 无需互联网的 **多设备离线通信** 工具。一台 Android 设备开热点作为主机,多台手机、平板或 Windows 电脑可同时加入,进行文字聊天与文件互传。 适合飞机、火车、乡下等无网络场景:把手机里的照片、视频快速传到笔记本,或在多台设备之间共享文件。 ## 产品预览 | 手机 / 平板端 | Windows 电脑端 | |:---:|:---:| | ![手机端界面](phone.png) | ![电脑端界面](pc.png) | ## 特性 - **纯离线**:检测到移动数据或可用互联网时会阻止使用,确保只在离线局域网内传输 - **一对多**:一台主机 + 多台客户端(Android 手机 / 平板 + Windows PC) - **双角色**:Android 端可选「创建热点(主机)」或「加入聊天(客户端)」 - **富媒体**:文字、图片、视频、语音录音、任意文件双向传输 - **轻量**:Android APK 约 1.5 MB;Windows 客户端基于 Python tkinter,无需额外 pip 依赖 ## 工作原理 ``` ┌── Android 客户端 │ ┌──────────────┐ │ ┌── Windows 客户端 │ Android 主机 │◄───┼───►│ (linkchat.py) │ HTTP :42888 │ │ └── ... └──────────────┘ │ 本地 WiFi 热点 └── Android 客户端 ``` 1. **主机**:一台 Android 设备开启个人热点,App 内选择「创建热点」并启动服务 2. **客户端**:其他设备连接该热点,输入主机 IP(常见为 `192.168.43.1`)加入 3. **通信**:各端通过 HTTP 轮询消息、上传 / 下载文件,共享同一份聊天记录 ## 快速开始 ### 方式一:使用发布包(推荐) 在项目根目录执行打包脚本: ```powershell .\build_packages.ps1 ``` 生成文件: - `dist/OfflineChat-android.apk` — 安装到 Android 手机 / 平板 - `dist/OfflineChat-windows/OfflineChat.exe` — Windows 双击运行 ### 方式二:从源码运行 #### Android ```bat cd OfflineChat python scripts\generate_icons.py gradlew.bat assembleRelease adb install -r app\build\outputs\apk\release\app-release.apk ``` #### Windows 双击 `windows\启动电脑客户端.bat`,或: ```bat cd OfflineChat\windows python linkchat.py ``` ### 连接步骤 | 步骤 | 主机(Android) | 客户端 | |------|-----------------|--------| | 1 | 打开 App,输入昵称,选择「创建热点」,点「开始」 | — | | 2 | 按提示开启个人热点,记下热点名称与密码 | 系统 WiFi 设置中连接该热点 | | 3 | 等待其他设备加入 | 输入主机 IP(默认 `192.168.43.1`),点「连接」 | | 4 | 开始聊天 / 传文件 | 同样可发送和接收 | - Android 客户端:选择「加入聊天」,填写主机 IP 后连接 - 电脑收到的文件默认保存在:`下载\OfflineChat\` ## 功能列表 | 功能 | Android 主机 | Android 客户端 | Windows | |------|:------------:|:--------------:|:-------:| | 文字聊天 | ✅ | ✅ | ✅ | | 发送图片 | ✅ | ✅ | ✅ | | 发送视频 | ✅ | ✅ | ✅ | | 语音录音 | ✅ | ✅ | — | | 发送音频 / 任意文件 | ✅ | ✅ | ✅ | | 双向下载 | ✅ | ✅ | ✅ | ## 项目结构 ``` OfflineChat/ ├── app/ # Android 应用源码 ├── windows/ │ ├── linkchat.py # Windows 客户端 │ ├── 启动电脑客户端.bat │ └── build_exe.ps1 # PyInstaller 打包脚本 ├── scripts/ │ └── generate_icons.py # 从 logo.png 生成图标 ├── build_packages.ps1 # 一键打包 Android + Windows ├── logo.png # 应用 Logo 源图 ├── phone.png # 产品介绍图(手机端) └── pc.png # 产品介绍图(电脑端) ``` ## API 端点(主机 HTTP 服务,端口 42888) | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/info` | 服务器与热点信息 | | POST | `/api/register` | 客户端注册 | | POST | `/api/heartbeat` | 客户端心跳 | | POST | `/api/unregister` | 客户端注销 | | GET | `/api/clients` | 在线客户端列表 | | GET | `/api/messages?after=` | 轮询新消息 | | POST | `/api/chat` | 发送文字 | | POST | `/api/upload` | 上传文件(multipart) | | POST | `/api/upload/raw` | 上传文件(原始体) | | GET | `/api/download/{id}` | 下载文件 | ## 开发环境 | 组件 | 要求 | |------|------| | Android | JDK 17,Android SDK 35,Gradle 8.x | | Windows 客户端 | Python 3(自带 tkinter) | | 打包 Windows exe | Python 3 + PyInstaller | | 生成图标 | Python 3 + Pillow | Gradle 依赖仓库已配置阿里云 / 腾讯云镜像,国内网络可直接构建。 ## 常见问题 **提示需要离线环境?** 请关闭移动数据,并断开能访问互联网的 WiFi,仅保留与主机热点的连接后再试。 **电脑连不上?** - 确认 WiFi 已连上**手机热点**(不是家里路由器) - 尝试主机界面上显示的服务器 IP - 主机 App 保持在前台,避免长时间锁屏 **热点开启失败?** - 确认手机 WiFi 已打开 - 关闭系统自带的个人热点后,在 App 内重新开启 - 部分机型需授予「附近设备」等权限 **传大文件很慢?** 离线 WiFi 直连带宽有限,属正常现象,请耐心等待。 ## 开源协议 本项目以 MIT 协议开源,详见 [LICENSE](LICENSE) 文件。