Mark's blog

项目地址

GitHub: https://github.com/Mark-ThinkPad/TCP_Robot

Gitee: https://gitee.com/Mark-ThinkPad/TCP_Robot (国内用户访问速度更快)



简介

  • 计算机网络课程设计中的一个题目: 基于TCP协议的简易聊天机器人
  • 开发语言: Python 3.7.3
  • 开发平台: Manjaro Linux 18
  • 初期版本其实就是很容易搜到的现成的轮子: 教程链接, 只能在终端中使用(CLI)
  • 最后的完成版为客户端编写了”简陋”的图形界面(GUI), 使用了 Qt5(PyQT5) 实现
  • 服务端的图形界面暂时无法完整实现, 因为一时无法想出把TCP连接线程中接收到的客户端消息实时刷新的方法, 后面还有两门课设如期而至, 时间紧迫, 只能暂时弃坑, 随缘更新

文件内容

  • server.py: 服务端端核心代码, 已经抽象成类, 可以直接在终端中运行
  • robot.py: 没有完整实现的服务端图形界面, emmm, 看看就好
  • client.py: 客户端核心代码, 也抽象成类, 可以在终端中直接运行
  • user.py: 简陋的客户端图形界面, 支持更换聊天消息框的颜色和字体, 支持夜间模式, 支持一键断开连接和一键重连, 默认回车键快捷发送消息
  • /UI/: 使用 Qt Designer 设计的界面布局文件, 仅用来提供各个部件的定位
  • /background/: 客户端图形界面实现过程中使用的背景图片文件, 发现设置背景图片后实际效果并不好看, 所以没有采用背景图片的方案, 但还是决定把图片保留下来, 图片来源: Bing必应每日壁纸

技术实现

  • 最重要的其实是实现图形客户端的实时刷新消息的功能, Qt5界面中不做处理的直接使用循环可能会导致Qt主线程阻塞, 此时需要借助QThread类使实时刷新消息不阻塞Qt主线程, 同时注意与主线程之间的信号实时传递
  • 其他的直接看代码注释吧, 由于是第一次接触这些东西, 所以添加了不少注释

相关资料

 评论