Instant messaging software under LAN in Python(use UDP protocol).
使用Python UDP 实现的局域网下的即时通讯应用。
本应用中对用户数据信息的存储,没有使用真正的数据库,而是使用pickle持久化到本地文件中。每个用户的数据信息存储到一个文件中,通过文件名区分所属用户。
**用户信息:**指账户信息和好友信息
| id | username | password | friends | groups |
|---|---|---|---|---|
| str:abcd5d | str:Lee | str: 55558 | list:[abcd5d,] | dict:{gname:[abcd5d,]} |
文件名: 存储用户数据信息的文件的命名规则 {id}.pickle . (如:lee:abcd5d.pickle, 表示用户名username=='lee'且id==‘abcd5d’ 的信息所在文件),称之为用户名相关文件。
O. 用户认证登陆,查看好友列表:这些数据均采用本地持久化方式实现(见上述:DB设计)。
A. 用户一对一聊天:采用UDP单播
B. 多用户(所有在线用户)聊天:采用UDP广播
C. 多个指定用户群聊(就像QQ群):是功能B的细化和拓展,可采用UDP广播或多播。... ... 暂不实现
一般可以先做一个程序架构设计,然后以此为基础再细化结构设计。但本应用较简单且逻辑清晰,就直接省略了。
-
用户登陆逻辑:根据用户输入的
username,password,查看DB中是否有相应用户名相关的文件,读取文件并验证password。 成功验证后展示用户好友列表,该信息也存储在用户名相关的文件中(如上述文件lee:abcd5d.pickle)。 -
所有用户公共聊天: 采用UDP广播,广播消息。
-
一对一单播逻辑: 该逻辑的实现需要客户端和服务器端的配合。其服务器的设计采用TFTP的设计思想。
注:图1截取自《unix网络编程 第二版》一书。
-
整体client-server架构设计:
v.0.1 当前版本。仅支持局域网下简单文本聊天。
v.0.2 进程间通信数据结构优化....
v.1.0 数据顺序性,可靠性保证....
v.2.0 大文件传输支持...


