紧接着上一节课程,这次的作业是要求实现一个简易版的“QQ”,可支持“软件需求”所列出的功能。当时由于图方便便选择了QTCPSocket进行整个过程的通信(事后才知道有多坑)。服务端界面比较简单,就几个按钮一个进度条,主要在客户端实现了基本的功能和界面。整个学习和开发阶段持续了将近3个礼拜,可谓是历史悠久。总的来说功能都实现了,但是存在一定的bug,估计以后也没时间去搞了,留在这儿当做一个自我的学习记录和新手的学习借鉴Demo。
运行要求
- 同一局域网,默认端口:1234和4321,分别是聊天服务和文件服务。
- 服务端代码为:SocketServer.rar
- 客户端代码为:SocketClient.rar
软件需求
- 支持文本消息的传输;
- 支持局域网内在线用户搜索的功能;
- 可以采用c/s或者b/s结构,也可以混合结构;
- 支持文件传输功能;
- 支持1GB大小的数据文件正确传输;
- 支持断点续传的功能。
主要特点为
- 利用QTCPSocket完成通信,包括聊天和文件上传。
- 仿QQ双击条目打开窗口聊天,收到消息自动弹窗。
- 支持拉取历史聊天记录,从服务获取,默认全时间段。
- 利用QLineEdit组合QPushButton实现在线用户搜索,并高亮显示。
- 可支持跨机器的登录与注册。
- 服务端推送的在线用户列表,客户端实时更新。
- 轻量级的sqlite数据库,无需配置额外环境。
- 用户下线的监听,包括正常下线和异常下线,都可捕获。
- 支持离线文件传输,A客户端先发送到服务端,服务端保存一份,再发送到B客户端。
- 支持GB级大文件的快速传输。
- 支持断点续传,客户端点击暂停模拟断开链接或者客户端关闭窗口或者客户端下线,点击重新发送重连服务端进行续传即可。