一个基于 Python Socket 和 PySide6 的简单聊天程序,支持文字和图片发送、好友管理等功能。
- ✅ 用户注册和登录
- ✅ 实时文字消息发送
- ✅ 图片文件传输
- ✅ 好友管理(添加、删除、搜索)
- ✅ 在线用户状态显示
- ✅ 图形化用户界面
simple-chat/
├── chat-client/ # 客户端目录
│ ├── app/ # 客户端应用模块
│ │ ├── __init__.py
│ │ ├── proxy_utils.py # 代理工具模块
│ │ ├── network.py # 网络通信模块
│ │ ├── login_dialog.py # 登录对话框模块
│ │ ├── chat_window.py # 主聊天窗口模块
│ │ └── application.py # 应用程序主模块
│ ├── client.py # 客户端启动程序
│ └── main_backup.py # 原始客户端程序(备份)
├── chat-server/ # 服务端目录
│ ├── app/ # 服务端应用模块
│ │ ├── __init__.py
│ │ ├── proxy_utils.py # 代理工具模块
│ │ ├── user_manager.py # 用户管理模块
│ │ ├── client_manager.py # 客户端管理模块
│ │ ├── request_handler.py # 请求处理模块
│ │ ├── chat_server.py # 聊天服务器核心模块
│ │ └── ui.py # 用户界面模块
│ ├── main.py # 服务端启动程序(带UI)
│ └── server.py # 服务端启动程序(无UI)
├── .vscode/ # VSCode配置
│ └── tasks.json # 任务配置
├── requirements.txt # 依赖包列表
└── README.md # 说明文档
pip install -r requirements.txt或手动安装:
pip install PySide6
pip install Pillow有两种方式启动服务端:
方式一:使用用户界面(推荐)
cd chat-server
python main.py这将启动一个交互式用户界面,可以:
- 启动/停止服务器
- 查看服务器状态
- 查看在线用户
- 查看统计信息
方式二:直接启动服务端(无界面)
cd chat-server
python server.py服务端将在 localhost:8899 启动。
打开新的终端窗口:
cd chat-client
python client.py- 运行客户端程序后,会弹出登录对话框
- 点击"Register"按钮注册新用户
- 输入用户名和密码进行注册
- 注册成功后,使用相同的用户名和密码登录
- 添加好友:在左侧面板点击"Add Friend"按钮,输入要添加的用户名
- 开始聊天:双击好友列表中的用户名打开聊天窗口
- 发送消息:在底部输入框输入文字,按回车或点击"Send"按钮发送
- 发送图片:点击"Send Image"按钮选择图片文件发送
- 添加好友:点击"Add Friend"按钮
- 搜索好友:点击"Search"按钮搜索用户是否存在
- 删除好友:选中好友列表中的用户,点击"Delete"按钮
- 使用 Socket 监听客户端连接
- 多线程处理并发客户端请求
- 使用 JSON 文件存储用户数据
- 支持:
- 用户注册/登录认证
- 消息转发
- 图片文件传输
- 好友列表管理
- 在线状态管理
- 使用 PySide6 构建图形界面
- 独立的网络线程处理与服务器的通信
- 支持:
- 登录/注册界面
- 好友列表显示
- 实时聊天窗口
- 图片预览
- 在线状态显示
- 防火墙设置:确保防火墙允许 8899 端口的通信
- 网络连接:客户端和服务端需要在同一网络环境中
- 文件大小:图片文件不宜过大,建议小于 10MB
- 数据存储:用户数据存储在服务端的
users.json文件中
A: 检查服务器是否已启动,防火墙是否阻止了连接
A: 检查图片文件是否存在,文件路径是否正确
A: 检查用户名是否已被使用,确保输入有效的用户名和密码
- 添加消息加密功能
- 支持群聊功能
- 添加语音消息
- 支持文件传输(不仅限于图片)
- 添加聊天记录保存功能
- 支持用户头像显示
- 添加表情包功能
MIT License