suwoodblender/使用说明.md

312 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Socket JSON 传输系统使用说明
## 📋 系统概述
这是一个基于 Python Socket 的 JSON 文件传输系统,包含完整的服务器端和客户端实现。系统支持:
- ✅ JSON 格式文件的双向传输
- ✅ 多客户端并发连接
- ✅ 完整的命令系统(获取文件、保存文件、列出文件、心跳测试)
- ✅ 实时状态监控和错误处理
- ✅ 自动化测试工具
## 📁 文件结构
```
blender/
├── server.py # 服务器端程序
├── client.py # 客户端程序
├── test_data.json # 测试用 JSON 文件
├── test_socket.py # 自动测试脚本
├── test.bat # Windows 快速测试工具
└── 使用说明.md # 本说明文档
```
## 🚀 快速开始
### 方法一:自动测试(推荐)
在 Windows 系统下:
```bash
# 双击运行
test.bat
# 或在命令行运行
python test_socket.py
```
### 方法二:手动测试
1. **启动服务器**
```bash
python server.py
```
服务器启动后会显示:
```
🚀 服务器启动成功!
📍 监听地址: localhost:8888
⏰ 启动时间: 2024-xx-xx xx:xx:xx
✅ 等待客户端连接...
```
2. **在另一个终端窗口启动客户端**
```bash
# 交互模式
python client.py
# 或运行测试模式
python client.py test
```
## 🎮 客户端交互命令
进入客户端交互模式后,可以使用以下命令:
| 命令 | 说明 | 示例 |
|------|------|------|
| `get <filename>` | 从服务器获取文件 | `get test_data.json` |
| `save <filename>` | 保存文件到服务器 | `save my_data.json` |
| `list` | 列出服务器上的 JSON 文件 | `list` |
| `ping` | 测试服务器连接 | `ping` |
| `msg <message>` | 发送普通文本消息 | `msg Hello Server!` |
| `quit` | 退出客户端 | `quit` |
### 保存文件示例
当使用 `save` 命令时,系统会提示输入 JSON 内容:
```
👉 请输入命令: save my_test.json
请输入要保存的 JSON 内容(输入空行结束):
{
"name": "测试用户",
"age": 25,
"message": "这是测试数据"
}
# 输入空行结束
```
## 🧪 测试方法详解
### 1. 自动化测试
运行 `python test_socket.py` 会执行以下测试:
-**文件检查**:验证所有必需文件是否存在
-**服务器启动**:自动启动服务器并检查状态
-**客户端功能**:测试所有客户端命令
-**文件传输**:验证 JSON 文件的正确传输
### 2. 手动功能测试
**测试步骤:**
1. **基础连接测试**
```bash
# 终端1启动服务器
python server.py
# 终端2连接客户端
python client.py
```
2. **心跳测试**
```
👉 请输入命令: ping
```
预期响应:
```json
{
"status": "success",
"command": "ping",
"message": "pong",
"server_time": "2024-xx-xxTxx:xx:xx",
"client_address": "127.0.0.1:xxxxx"
}
```
3. **文件列表测试**
```
👉 请输入命令: list
```
预期响应:
```json
{
"status": "success",
"command": "list_files",
"files": ["test_data.json"],
"count": 1
}
```
4. **文件获取测试**
```
👉 请输入命令: get test_data.json
```
预期响应:
```json
{
"status": "success",
"command": "get_file",
"filename": "test_data.json",
"content": { ... },
"size": 1234
}
```
5. **文件保存测试**
```
👉 请输入命令: save new_file.json
请输入要保存的 JSON 内容(输入空行结束):
{"test": "data"}
# 输入空行
```
6. **普通消息测试**
```
👉 请输入命令: msg 你好服务器!
```
### 3. 多客户端并发测试
服务器支持多个客户端同时连接:
```bash
# 终端1服务器
python server.py
# 终端2客户端1
python client.py
# 终端3客户端2
python client.py
# 终端4客户端3
python client.py
```
## 📊 测试结果验证
### 成功指标
1. **服务器端日志**
```
🚀 服务器启动成功!
🔗 客户端连接: ('127.0.0.1', 端口号)
📨 收到来自 ('127.0.0.1', 端口号) 的消息: {...}
```
2. **客户端端日志**
```
✅ 已连接到服务器 localhost:8888
📤 发送请求: {...}
📥 收到响应: {...}
```
3. **生成的文件**
- `client_test.json` - 客户端测试时创建的文件
- `test_report.json` - 自动测试生成的详细报告
### 常见问题排查
1. **连接失败**
```
❌ 连接失败: [Errno 10061] No connection could be made
```
**解决方案**:确保服务器已启动,检查端口 8888 是否被占用
2. **文件不存在**
```json
{
"status": "error",
"message": "文件 xxx.json 不存在"
}
```
**解决方案**:检查文件名是否正确,确保文件在服务器目录中
3. **JSON 格式错误**
```
❌ JSON 格式错误: Expecting ',' delimiter
```
**解决方案**:检查 JSON 语法,使用在线 JSON 验证工具
## 🔧 高级配置
### 修改服务器配置
`server.py` 中修改:
```python
# 修改监听地址和端口
server = JSONSocketServer(host='0.0.0.0', port=9999)
```
### 修改客户端配置
`client.py` 中修改:
```python
# 连接到不同的服务器
client = JSONSocketClient(host='192.168.1.100', port=9999)
```
### 解决 Windows 编码问题
如果在 Windows 控制台遇到 Unicode 编码错误:
1. **使用编码安全版本**
```bash
# 使用编码安全的服务器
python server_safe.py
```
2. **设置控制台编码**
```cmd
# 在 CMD 中运行
chcp 65001
set PYTHONIOENCODING=utf-8
python server.py
```
3. **使用现代终端**
- Windows Terminal推荐
- VS Code 集成终端
- PowerShell 7
4. **文件包含**
- `encoding_fix.py` - 编码修复模块
- `server_safe.py` - 编码安全的服务器版本
- `requirements.txt` - 依赖说明(无需额外包)
## 🛡️ 安全注意事项
- 此系统仅用于学习和测试,不适用于生产环境
- 服务器默认只监听 localhost如需远程访问请谨慎配置
- 传输的数据未加密,敏感信息请使用 HTTPS 或其他加密方案
## 📚 扩展功能
系统支持轻松扩展:
1. **添加新命令**:在 `server.py``process_request` 方法中添加新的命令处理
2. **文件验证**:添加文件类型检查、大小限制等
3. **用户认证**:实现简单的用户名密码验证
4. **数据压缩**:对大文件进行压缩传输
5. **传输加密**:使用 SSL/TLS 加密连接
## 🎯 总结
这个 Socket JSON 传输系统提供了:
- 🔧 **完整功能**:文件传输、列表查看、心跳检测
- 🚀 **易于使用**:一键测试,交互式命令行
- 🛠️ **可扩展性**:清晰的代码结构,便于功能扩展
- 📊 **完善测试**:自动化测试工具,详细的测试报告
通过运行 `test.bat`Windows`python test_socket.py` 开始您的测试之旅!