模拟QQ多人聊天室

本项目我们小组开发了一套基于TCP协议的主从模式聊天系统,由运行于Ubuntu18.04(WSL)上的server程序和运行于Windows上的client GUI程序组成。项目在Server端实现了多Client的自动分配Select机制,从而连接多个client分别通信,并通过SQLite数据库实现用户信息存取以及日志记录。在client端采用QT制作GUI界面,优化用户体验,构成了一套较完整的架构体系。最终项目能够实现WSL上server与Windows上client的通信,包括单对单、单对多的文字信息通信,并附有完整项目视频展示。

Overview

本项目总体可分为两大部分,即server端和client端。Server端代码包含srv.cpp & database.h,client端为qt工程项目。

首先运行server端建立通信服务器。在安装有sqlite3的Ubuntu18.04(WSL)系统对应目录中使用命令g++ srv.cpp -o srv -l sqlite3编译源码,运行源码。注意,由于WSL中的srv进程要与Windows的clt进程通信,故需在Hyper-V虚拟网关上做端口转发,即在Windows Powershell中输入命令sh interface portproxy add v4tov4 listenport=8081 listenaddress=0.0.0.0 connectport=8081 connectaddress=WSL_ADDR protocol=tcp,这样WSL的进程才能与Windows上的进程进行socket通信。

然后在Windows上运行客户端程序。用Qt Creator打开login.pro文件,在global.cpp中按需修改IP和端口使之与srv的对应,最后编译运行程序,得到client窗口界面。可重复创建Qt Creator打开login.pro文件,运行得到多个client进程。

Framework

整个程序基于C/S模型实现,程序运行过程中有一台服务器和多台客户端。客户端之间不能直接通信, 所有的消息都必须先经过服务器,服务器对消息进行解析,根据消息类型做出相应的处理。服务器在整个过程中充当着中转站的角色。程序整体架构如下:

Result

界面设计

注册登录

聊天界面

Share: @Github

Comments:

27 JANUARY, 2022

You are so good! You still have hair!!!

Leave a Comment: