Skip to content

局域网聊天室 ver 1.0.1

Latest

Choose a tag to compare

@CobePuppy CobePuppy released this 26 Aug 08:54

局域网聊天室(C++/Qt)- Release 版本说明

项目概述
本项目是一款基于 C++ 语言与 Qt 框架开发的高性能局域网聊天工具,核心采用 Qt 网络模块(QTcpSocket/QTcpServer)构建稳定的客户端 - 服务器(C/S)架构,支持多用户在同一局域网环境下通过 “IP 地址 + 端口映射” 机制加入专属聊天空间,实现实时消息交互、用户状态同步与群组沟通功能。整体设计兼顾易用性与稳定性,既保留了 Qt 框架的跨平台特性,又通过轻量级网络协议确保低延迟、高可靠的局域网通信体验。
核心技术架构与功能特性

  1. 底层技术栈:高效、跨平台的开发基石

    开发语言与框架:基于 C++17 标准开发,依托 Qt 6.x 框架实现核心能力 ——Qt Core 提供数据序列化 / 反序列化支持,Qt Network 构建 TCP 可靠连接,Qt Widgets 打造直观交互界面,确保在 Windows/macOS/Linux 多系统下均能无缝运行;
    网络通信核心:采用 TCP 协议作为传输层基础,通过自定义 “消息长度前缀 + 结构化数据” 协议解决网络粘包问题,确保消息收发的完整性与顺序性;服务器端通过 QTcpServer 监听指定端口,为每个客户端连接创建独立 ClientConnection 实例,实现多用户并发处理(支持 20+ 客户端同时在线,无明显延迟);
    地址访问机制:支持 “同一 IP 地址 + 多端口” 灵活部署 —— 用户可通过配置服务器 IP(如局域网网关 192.168.1.100)与自定义端口(默认 8888,支持 1024-65535 范围内修改),快速创建或加入不同主题的聊天房间(如 “技术讨论房” 用 8888 端口,“生活分享房” 用 8889 端口),满足多场景分组沟通需求。

2. 核心功能:覆盖局域网聊天全场景需求
(1)用户交互与身份管理

便捷登录流程:客户端无需注册,输入用户名与目标服务器的 IP / 端口即可发起连接,服务器实时校验连接合法性并返回登录状态(成功 / 失败提示);
在线状态同步:服务器实时维护在线用户列表,当用户加入 / 退出聊天室时,自动向所有在线客户端广播状态通知(如 “用户 [张三] 加入聊天”“用户 [李四] 离开聊天”),客户端界面实时更新左侧用户列表,直观展示当前在线人数与成员信息。

(2)实时消息通信

多样化消息类型:支持 “普通文本消息”“系统通知消息” 两类核心消息 —— 普通消息包含发送者昵称、内容与时间戳(精确到秒),系统消息由服务器主动推送(登录结果、用户状态变更、房间公告等),两类消息在客户端界面通过不同颜色与格式区分(如系统消息灰色斜体,用户消息黑色加粗),提升阅读体验;
低延迟消息转发:客户端发送消息后,经序列化转为二进制流传输至服务器,服务器毫秒级完成消息解析并广播至所有在线客户端,局域网内消息传输延迟<100ms,无明显卡顿或丢包现象。

(3)界面交互与操作体验

直观可视化界面:采用 Qt Designer 设计分层布局 —— 顶部为 “IP / 端口 / 用户名” 配置区(连接按钮禁用时自动置灰,避免误操作),左侧为在线用户列表(支持滚动,显示用户昵称),右侧为消息显示区(支持自动换行、时间戳前缀,历史消息持久化至本次会话),底部为消息输入区(支持 Enter 键快捷发送,输入为空时禁用发送按钮);
异常处理与提示:针对 “网络断开”“服务器未启动”“端口被占用” 等异常场景,客户端通过弹窗与状态栏提示明确错误原因(如 “连接失败:无法访问目标 IP,请检查网络或服务器状态”),服务器端通过日志文件(server_log.txt)记录连接、断开、消息转发等关键事件,便于问题排查。
  1. 性能与稳定性:保障长期可靠运行

    并发处理能力:服务器采用 “单线程监听 + 多实例处理” 模式,每个客户端连接独立占用一个 QTcpSocket 实例,避免多用户并发时的资源竞争问题,在普通家用路由器环境下,支持 20+ 客户端同时发送消息(每条消息 100 字以内),服务器 CPU 占用率<10%,内存占用<50MB;
    断连重连机制:客户端检测到网络断开后(如网线脱落、服务器重启),自动禁用发送功能并显示 “已断开连接” 提示,用户点击 “重新连接” 按钮即可快速重试,无需重新输入 IP / 端口 / 用户名(自动保留上次配置);
    数据安全性:消息传输过程中通过 Qt 内置的 QDataStream 进行序列化,避免明文传输导致的内容泄露风险;同时服务器限制单 IP 最大连接数(默认 10 个),防止恶意连接占用资源,保障聊天室稳定运行。

部署与使用说明

  1. 环境依赖

    运行环境:Windows 10/11(64 位)、macOS 12+、Ubuntu 20.04+(64 位),需提前安装 Qt 6.x 运行时库(Release 包已内置必要依赖库,普通用户无需手动安装);
    网络要求:所有客户端与服务器需处于同一局域网(如连接同一 WiFi、同一交换机),服务器端需确保目标端口未被防火墙拦截(Windows 需允许程序通过防火墙,Linux/macOS 需开放对应端口:sudo ufw allow 8888/tcp)。

  2. 快速启动流程
    (1)启动服务器

    运行 ChatServer.exe(Windows)/ ChatServer(macOS/Linux),终端提示 “服务器启动成功,端口:8888” 即表示启动完成;
    如需修改端口,可在启动时通过命令行指定:ChatServer --port 8889(端口范围 1024-65535)。

(2)启动客户端

运行 ChatClient.exe(Windows)/ ChatClient(macOS/Linux),在界面顶部输入:
    服务器 IP:如服务器所在电脑的局域网 IP(可通过 ipconfig/ifconfig 命令查询);
    端口:与服务器端口保持一致(默认 8888);
    用户名:自定义昵称(如 “小明”,不支持特殊字符);
点击 “连接” 按钮,提示 “登录成功” 后即可发送消息(输入内容后点击 “发送” 或按 Enter 键)。

版本迭代与后续规划
当前 Release 版本(V1.0.0)亮点

完成核心 C/S 架构搭建,实现局域网多用户实时聊天;
优化界面交互逻辑,新增异常提示与状态同步功能;
修复 “消息粘包”“断连后无法重连” 等已知问题,提升稳定性。

后续迭代方向

功能扩展:支持表情包发送、文件传输(≤100MB)、私聊功能;
体验优化:新增历史消息本地缓存(退出后保留最近 100 条消息)、自定义界面主题(浅色 / 深色模式);
性能升级:优化服务器并发处理逻辑,支持 50+ 客户端同时在线,新增负载监控功能。

问题反馈与支持
如在使用过程中遇到 “连接失败”“消息发送异常” 等问题,可通过以下方式反馈:

查看服务器日志文件(server_log.txt),提取关键错误信息;
项目 GitHub/GitLab 仓库 Issues 区提交问题描述(附操作系统版本、网络环境、错误截图);
技术交流邮箱:support@lan-chat-tool.com(24 小时内回复)。

本项目为开源学习项目,欢迎开发者 Fork 仓库进行二次开发,或提交 PR 参与功能迭代,共同完善局域网聊天工具的体验!