python通信+多线程动手项目——多用户IM
项目描述:实现多人异步文字聊天
?
技术选型:python的socket模块、Tkinter模块、threading
?
开发工具:vim
?
开发过程:
?
1、首先画出整个系统服务器和客户端的交互图,将整个的系统的逻辑理清【见附图3 服务器客户端交互图】
? ? ? ?针对一开始设定的实现目标:多人多任务文字聊天,画出了登录->登录验证->消息的缓存->同时在线聊天等多个模块的交互逻辑,这样在正式写代码的时候就不会走那么多弯路,尤其是有效逻辑不严谨带来的额外工作开销。
2、设计整个项目的结构【见附图1 项目源码组织图】,主要包括:
msg包:自定义简单的应用协议,实现消息的封装tools包:一些工具类的封装,如对底层数据的读写时候的编码和解码tcpClient:客户端程序tcpServer:服务器段程序3、代码实现
主要参考《python与Tkinter编程》
? ? ? ? ? ? ? ? 《python核心编程》
? ? ? ? ? ? ? ? ?《python网络编程基础》21章关于线程的部分
? ? ? ? ? ? ? ? 以及python在线库参考文档中关于socket模块/struct模块/xml解析相关模块
?
所有源码可在附件下载LingL_src.tar.gz
?
?
?
附图1 :项目源码目录结构图:
附图2 :用户关系配置文件LingL/tcpServer/relationships.xml:
?
?
附图3 :客户端服务器交互时序图: