Skip to content

Feipi/LANMessager

Repository files navigation

LAN Messenger Cross-Device

跨设备局域网即时通讯程序

项目概述

本项目是一个支持多设备的轻量级局域网即时通讯工具,实现局域网内电脑与手机、手机与手机之间的实时文本通讯、文件传输等功能,无需依赖互联网。

技术栈

  • 电脑端: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目录中。

  1. 确保已安装Flutter SDK
  2. 进入手机客户端目录:
    cd client_mobile
  3. 安装依赖:
    flutter pub get
  4. 运行应用:
    flutter run

项目结构说明

服务器端 (server/)

  • server.py: 服务器核心实现
  • 处理客户端连接、消息转发、用户管理等

桌面客户端 (client_desktop/)

  • client.py: 客户端核心通信逻辑
  • gui.py: 图形用户界面 (基于PyQt5)
  • 实现文本消息、文件传输等功能

手机客户端 (client_mobile/)

  • Flutter项目,支持Android和iOS
  • 实现与桌面端相同的功能
  • 位于client_mobile/目录

开发指南

添加新功能

  1. 服务器端功能:修改server/server.py
  2. 桌面客户端功能:修改client_desktop/client.py
  3. 桌面GUI功能:修改client_desktop/gui.py
  4. 手机客户端功能:修改client_mobile/lib/目录下的文件

通信协议

客户端与服务器通过JSON格式的消息进行通信,主要消息类型包括:

  • auth: 用户认证
  • text_message: 文本消息
  • file_request: 文件传输请求
  • file_chunk: 文件数据块
  • user_list: 用户列表更新
  • heartbeat: 心跳包

详细协议说明请参考docs/README.md

About

一款局域网即时通讯程序

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published