!"#$%&'()
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
*+#,-.)
在 Linux 平台上开发一个基于主机系统的多客户多终端即时聊天系统。
/+#,01)
通信系统应实现以下功能:
n 实现多用户的注册与登录功能。
n 实现用户的实时聊天功能。
n 实现群聊功能。
n 实现文件传输功能。
2+#,34)
实验基于 Linux 系统进行,系统版本号为 Ubuntu 20.04;应用程序开发工具
为 QT5.12.9;后端用户信息以及文件信息存储数据库为 Linux 系统下 MYSQL 数据
库,数据库版本为 Mysql6.8。值得注意的是,需要对 Qt 配置 MYSQL Server 的驱
动程序,否则可能无法连接数据库。
5+#,67)
本次实验采用增量开发模型。
开发的顺序依次为:
7 月 2 日-7 月 4 日:完成用户界面的前端设计,页面间跳转逻辑设置,在逻
辑上完成用户的注册登录,私聊,群聊与文件下载功能。设计消息提示对话
框,引导用户使用。
7 月 7 日-7 月 10 日:完成前端客户端 tcp 套接字与后端服务器 tcp 套接字
设计,定义两者间接口与传输的数据结构,测试结构体传输稳定性。
7 月 11 日-7 月 12 日:完成服务器端业务逻辑设置,定义对客户端服务的各
种函数接口,同时将服务请求逻辑加入客户端,测试业务逻辑的稳定性。
7 月 13 日-7 月 14 日:完成服务器端多线程设计,完善前端文件下载的准确
性与可靠性,完善群聊系统的业务设置。测试数据库,测试系统稳定性,撰
写实验报告,完成简易聊天系统实验。
8+#,9:)
为了便于对实验工程进行说明,实验过程部分将分别从前端设计,前后通信
套接字设计和后端数据库服务设计:
8+* ;<=>)
前端设计文件与其功能概要如下所示:
头文件名
源文件名
ui 文件名
文件功能
client_sp1.h
client_sp1.cpp
client_sp1.ui
用户功能跳转主界面,
跳转到私聊与群聊
client_sp2.h
client_sp2.cpp
client_sp2.ui
用户私聊界面
client_sp3.h
client_sp3.cpp
client_sp3.ui
用户群聊界面
file_downloadpage.h
file_downloadpage.cpp
file_downloadpage.ui
文件下载页面
file_meg_item.h
file_meg_item.cpp
file_meg_item.ui
对方发送的文件消息
条目
file_meg_item_me.h
file_meg_item_me.cpp
file_meg_item_me.ui
自己发送的文件消息
条目
friend_info_dia.h
friend_info_dia.cpp
friend_info_dia.ui
好友详细信息页面
group_info_dia.h
group_info_dia.cpp
group_info_dia.ui
群聊详细信息页面
groupitem.h
groupitem.cpp
groupitem.ui
主界面的群聊入口条
目
main.h
/
/
程序入口,主函数
client_sp0.h
client_sp0.cpp
client_sp0.ui
用户注册与登录界面
normal_meg_item.h
normal_meg_item.cpp
normal_meg_item.ui
对方发送的普通文本
消息条目
useritem.h
useritem.cpp
useritem.ui
主界面私聊入口条目
normal_meg_item_me.h
normal_meg_item_me.cpp
normal_meg_item_me.ui
自己发送的普通文本
条目
前端页面间的跳转逻辑状态图如下所示:
8+/);?@ABCD=>)
8+/+* ;<BCD=>)
前端套接字主要从服务请求出发,为每个页面设计相应的数据请求服务,前
端每个页面需要的服务器端服务主要如下:
前端页面
该页面通过套接字请求的服务
client_sp2.cpp
私人会话页面,实时请求同聊天对象的聊天记录
client_sp3.cpp
群聊会话页面,实时请求群聊的聊天记录
file_downloadpage.cpp
文件下载页面,具体请求数据库中的某一份文件
file_meg_item.cpp
聊天界面中,对方发送的文件消息,无需请求服务
file_meg_item_me.cpp
聊天界面中,自己发送的文件消息,无需请求服务
friend_info_dia.cpp
好友详细信息页面,请求好友信息,用户名,账号,签名
group_info_dia.cpp
群聊详细信息页面,请求群聊人数,群聊成员,创建信息