🦋 蜻蜓信使

:butterfly: 蜻蜓信使

一款基于 Qt 开发的局域网即时通讯软件,支持文字消息和文件传输。


:glowing_star: 功能特点

  • 用户发现:通过 UDP 广播自动发现局域网内的在线用户
  • 即时通讯:一对一文字聊天,支持表情和格式化消息
  • 文件传输:支持发送任意格式的文件,自动处理文件名冲突
  • 账号系统:支持用户注册和登录,密码安全加密存储
  • 系统托盘:最小化到托盘,新消息通知
  • 现代化界面:精美的渐变 UI,流畅的动画效果

:file_folder: 项目结构

DgFlyChat/
├── src/                    # 源代码目录
│   ├── main.cpp            # 应用程序入口
│   ├── mainwindow.h/cpp    # 主窗口
│   ├── chatwindow.h/cpp    # 聊天窗口
│   ├── loginwindow.h/cpp   # 登录窗口
│   ├── registerwindow.h/cpp # 注册窗口
│   ├── tcpclient.h/cpp     # TCP 客户端
│   ├── tcpserver.h/cpp     # TCP 服务器
│   ├── udpworker.h/cpp     # UDP 用户发现
│   ├── user.h/cpp          # 用户信息类
│   └── filemanager.h/cpp   # 文件管理器
├── res/                    # 资源目录
│   └── resources.qrc       # Qt 资源文件
├── debug/                  # 调试版本编译输出
├── release/                # 发布版本编译输出
└── DgFlyChat.pro           # Qt 项目文件

:rocket: 编译与运行

环境要求

  • Qt 5.x 或更高版本
  • C++17 编译器
  • Windows 系统

编译步骤

  1. 使用 Qt Creator 打开 DgFlyChat.pro
  2. 选择 Debug 或 Release 构建套件
  3. 点击「构建」按钮编译项目
  4. 点击「运行」按钮启动程序

命令行编译

qmake DgFlyChat.pro
nmake  # 使用 Visual Studio
# 或者
make   # 使用 MinGW

:light_bulb: 使用说明

1. 用户注册

  • 打开程序,点击「注册新账号」
  • 填写用户名、昵称和密码
  • 密码长度至少 6 位
  • 点击「注册」完成注册

2. 用户登录

  • 输入用户名和密码
  • 勾选「记住密码」可以自动保存登录信息
  • 点击「登录」进入主界面

3. 发现用户

  • 程序启动后会自动通过 UDP 广播发现局域网内的在线用户
  • 用户列表会实时更新,显示昵称和 IP 地址

4. 开始聊天

  • 双击用户列表中的任意用户,打开聊天窗口
  • 在输入框中输入消息,按回车或点击「发送」按钮
  • 消息会显示在聊天记录中

5. 发送文件

  • 在聊天窗口中点击「:paperclip:」按钮
  • 选择要发送的文件
  • 文件会自动传输到对方电脑

6. 接收文件

  • 接收到的文件会自动保存到「文档/蜻蜓信使接收文件」目录
  • 如果文件名冲突,会自动重命名

:wrench: 核心模块说明

User 类

  • 负责用户信息的封装和管理
  • 支持序列化和反序列化

UDPWorker 类

  • 负责 UDP 广播和用户发现
  • 周期性发送在线广播,接收其他用户的上线/下线信息

TCPServer 类

  • 负责监听 TCP 连接
  • 处理消息和文件的接收

TCPClient 类

  • 负责与其他用户建立 TCP 连接
  • 发送消息和文件

FileManager 类

  • 负责文件保存和路径管理
  • 处理文件名冲突

:memo: 开发日志

v1.0.0

  • :white_check_mark: 实现用户注册和登录
  • :white_check_mark: 实现 UDP 用户发现
  • :white_check_mark: 实现 TCP 消息传输
  • :white_check_mark: 实现文件传输功能
  • :white_check_mark: 实现系统托盘
  • :white_check_mark: 美化用户界面

:page_facing_up: 许可证

本项目仅供学习和交流使用。

1 个赞