# 2023计网大作业 **Repository Path**: LostPatrol_3/2023-network-planning-project ## Basic Information - **Project Name**: 2023计网大作业 - **Description**: 2023计网 socket通讯编程大作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-06 - **Last Updated**: 2023-12-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: Socket, Python ## README # 2023计网大作业 # 客户端 ## 概述 + 使用`python 3.10`及以上运行 + GUI使用`PyQt5` + 多线程使用`QThread` + 通讯使用python原生`socket`模块 + 程序入口在`GUIClient` ## 结构 + `GUIFrame`:GUI组件、位置和风格设置,不包含任何功能实现 + `GUIClient`:实现Chatroom的所有功能,主程序的入口 + `SocketWorker`:包含`SendWorker`和`ReceiveWorker`用于在子线程中执行阻塞任务 + `picture`:存储GUI所需logo等图片 + `files`:存储接收到的图片和文件 ## 功能 + 发送文本消息(长度<4096) + 发送图片消息(大小<10MB) + 发送任意类型文件(大小<10MB) + 自定义用户名 + 实时显示并更新在线成员 ## 缺陷 + `disconnect`或点击关闭窗口会卡顿 + 显示格式可能会出问题 + 图片大小未进行适配 + 不能选择某用户单独通讯 + 其他奇怪bug + ....... # 服务端 ## 概述 + 使用`python3`运行 + 可运行在`linux` + 多线程使用`threading` + 无GUI界面 + 单文件`server.py` + (2023 11 08)部署于阿里云,公网ip`8.130.106.82`,开放端口`12345` ## 功能 + 监听所有ip的向端口12345的TCPsocket请求 + 同时非阻塞监听至多10个客户端消息 + 非阻塞接收、拼接并广播消息和大文件 + 定时检查客户端是否在线 + 定时广播在线成员列表 + 较好的稳定性 ## 缺陷 + 没有数据库,收到的大型文件数据以`bytes`形式暂存在内存中 + .... # History #### 客户端 - [x] GUI界面 - [x] 自定义用户名 - [ ] 自定义头像 - [x] 发送文本消息 - [x] 接收并显示文本消息 - [x] 发送图片消息 - [x] 接收并显示图片消息 - [x] 发送其他文件 - [x] 聊天成员列表 - [ ] 历史消息与文件记录 - [ ] 打包成exe ### 服务端 - [x] 云服务器 - [x] 非阻塞监听多客户端 - [x] 接受转发大文件 - [x] 检测与广播成员列表 - [x] 错误处理与稳定运行