学完 Python 语言和 网络编程以及 Qt 界面开发之后,能利用所学知识做一个带界面的聊天室项目,项目采取 C/S 构架(服务器/客户端),所以我们的项目包括服务器端程序和客户端程序。
开发工具以及运行平台说明:
pip install pyqt5
即可安装。项目实现的功能:
项目效果图如下:
项目开发完成后,先启动服务器端,然后再启动客户端,客户端可以启动多个,如上面的图例,我们启动 3 个客户端。
我们启动客户端后,我们先注册,在此,我注册了三个账号(如花,老鸟python 和周星星),注册成功后,就可以登录进聊天室,如上面的图例,如花先登进聊天室,然后是老鸟python 进入聊天室,最后是周星星进入聊天室。
在聊天室内,首先,如花送了礼物(汽车和美女),然后老鸟python 说了一句话:“大家好,欢迎大家来学习 python”,最后周星星说了一句:“老师好”。
服务器:采用 TCP 协议搭建,用于处理客户端的各种请求(注册,登录,送礼物,聊天等等)操作,并能同时处理多个客户端请求(可选用多线程,线程池,select 模型,epoll 模型)。
客户端:采用 TCP 协议连接服务器,QT 实现工作者线程和 UI 线程数据通信。
协议:粘包分包处理,应用层协议构建,数据包格式构建,各种异常退出处理,心跳检测处理等。
其它:TCP协议C/S架构,MVC分层架构、Python面向对象技术多线程并发、线程同步与互斥、对象之间信号与槽通信机制等。
此项目要求同学们独立完成,项目需要有自己的思路和创意。项目效果演示能经受突发情况(电脑不同、断网断电、错误操作等)的冲击、核心功能完善无 bug,并且能有个人水平的突破,项目最终版本可以上线使用。
同学们如能独立完成此项目,相当于熟练掌握了 TCP 网络协议的应用和 Python 面向对象编程思想和模块化思想,拥有编写网络软件的能力,熟练使用界面库 Qt。并且经过此次项目,同学们拥有了大型项目的布局概念、知道自己的技术栈,将来在面试、职业生涯中都是不可缺失的宝贵经验。
服务器端架构如下图:
客户端架构如下图:
功能模块 | 知识点 |
---|---|
用户管理 | 注册用户管理业务逻辑编写 登录用户管理业务逻辑编写 聊天室用户理 |
注册功能 | 注册包构建 注册查重 注册文件同时写处理 |
登陆功能 | 登录包构建 登录查重 |
房间群聊 | 聊天信息包构建和处理 房间用户进入和退出处理 礼物信息包构建和处理 |
协议包构建 | 包头构建 包内容构建 json序列化 |
粘包分包处理 | 粘包分包原因 粘包分包处理算法 包头解析方 |
应用层协议构建 | 阻塞recv多线程处理 connect,send,close处理 异步方案 和主线程通信方式(信号槽或其它) |
并发处理方案 | 多线程 select模型 epoll模型 |
心跳检测 | 为什么要心跳检测 心跳检测方式 检测物理线路和检测套接字区别 |
套接字退出处理 | 阻塞套接字如何退出 应用层关闭包构建 四次挥手的作用 |
通信逻辑和界面交互 | 多线程 消息循环 工作者线程和UI线程通信 |
qt窗口部件 | lable,edit,button,checkbox等等 界面美化 信号槽 |