跨设备局域网即时通讯程序
本项目是一个支持多设备的轻量级局域网即时通讯工具,实现局域网内电脑与手机、手机与手机之间的实时文本通讯、文件传输等功能,无需依赖互联网。
- 电脑端:Python 3.9+ + PyQt5
- 手机端:Flutter
- 网络通信:Socket (TCP/UDP)
- 数据存储:SQLite (电脑端) / Hive (手机端)
- 加密算法:AES
LANMessager/
├── server/ # 服务器端代码
├── client_desktop/ # 电脑客户端代码
├── client_mobile/ # 手机客户端代码
├── docs/ # 文档
└── README.md
- 用户认证(基于设备标识与局域网IP)
- 在线状态显示
- 实时消息传递
- 消息历史记录
- 文件传输(支持断点续传)
- 跨平台支持(Windows/macOS/Linux/Android/iOS)
- 消息加密传输
- Python 3.9+
- PyQt5 (用于桌面客户端GUI)
- Flutter SDK 2.18+ (用于手机客户端)
# 安装Python依赖
pip install -r requirements.txt# 启动服务器
python start_server.py服务器将在以下端口监听:
- TCP端口: 8888 (用于客户端连接)
- UDP端口: 8889 (用于服务发现)
# 启动桌面客户端
python start_client.py如果安装了PyQt5,客户端将启动图形界面;否则将启动命令行界面。
手机客户端使用Flutter开发,位于client_mobile目录中。
- 确保已安装Flutter SDK
- 进入手机客户端目录:
cd client_mobile - 安装依赖:
flutter pub get
- 运行应用:
flutter run
- server.py: 服务器核心实现
- 处理客户端连接、消息转发、用户管理等
- Flutter项目,支持Android和iOS
- 实现与桌面端相同的功能
- 位于client_mobile/目录
- 服务器端功能:修改server/server.py
- 桌面客户端功能:修改client_desktop/client.py
- 桌面GUI功能:修改client_desktop/gui.py
- 手机客户端功能:修改client_mobile/lib/目录下的文件
客户端与服务器通过JSON格式的消息进行通信,主要消息类型包括:
auth: 用户认证text_message: 文本消息file_request: 文件传输请求file_chunk: 文件数据块user_list: 用户列表更新heartbeat: 心跳包
详细协议说明请参考docs/README.md。