Mark-ThinkPad / TCP_Chat

Python专选课上机任务之一, 使用wxPython制作GUI, 调用Python socket中的TCP模式进行双向通信, 客户端和服务端都有可以使用的图形界面. 部分核心代码源于兄弟项目: https://github.com/Mark-ThinkPad/TCP_Robot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wxPython图形界面+TCP双向通信+多线程

Content

简介

  • Python专选课上机任务之一, 使用wxPython制作GUI, 调用Python socket中的TCP模式进行双向通信,
  • 客户端和服务端都有可以使用的图形界面.
  • 部分核心代码源于兄弟项目: https://github.com/Mark-ThinkPad/TCP_Robot
  • 开发环境: Python 3.7.4
  • 系统环境: Arch Linux

文件内容

  • Server.py: 服务端核心代码, 已经抽象成类, 可以直接在终端中运行. 自动回复功能默认开启, 如果需要关闭, 则在 Server 类中找到 chat() 方法的最后一段, 注释掉复读机模式下的两行代码, 取消注释人工回复模式下两行的被注释代码.
  • ChatServer.py: 服务端的图形界面, 支持独立运行. 自动回复功能默认开启, 如果需要关闭, 则在 ChatServer.py 中找到 RequestSync线程子类中的最后一段代码, 根据注释提示操作即可.
  • Client.py: 客户端核心代码, 也抽象成类, 可以在终端中直接运行(请先启动服务端)
  • ChatClient.py: 客户端的图形界面, 支持独立运行(请先启动服务端)
  • ChatUI.fbp: wxFormBuilder的生成文件

重要的技术实现

  • 消息持续刷新采用多线程来实现, 方法为编写自定义threading.Thread子类配合wx.CallAfter(), 实现消息的持续接收和消息刷新在图形界面上
  • 客户端图形界面只用了一个自定义线程子类
  • 服务端图形界面使用了两个自定义线程子类, 而且是嵌套调用关系

相关资料

About

Python专选课上机任务之一, 使用wxPython制作GUI, 调用Python socket中的TCP模式进行双向通信, 客户端和服务端都有可以使用的图形界面. 部分核心代码源于兄弟项目: https://github.com/Mark-ThinkPad/TCP_Robot

License:Do What The F*ck You Want To Public License


Languages

Language:Python 100.0%