客户端程序V1.0
1. 界面设计
1.1 登录界面
1.2 [课程选择界面]
1.3 主界面
<留待张凯补充>
2. 文件名以及文件路径约定
- 客户端本地文件名以及文件路径:以缓存形式存在<张凯补充具体的路径>
- 服务器端文件路径:/media/course/课程号/videos/课程号_年月日_分段.avi
3. 客户端与服务器端的连接模型
- 连接方式:TCP按需连接;
- 连接模型:一(服务器)对多(客户端)
4. 工作逻辑
- 首先服务器端程序一直运行;
- 客户端进入登录界面:填写用户名+密码,向服务器发送用户信息以及登录请求;服务器端响应客户端的登录请求,并返回对应教师的课程信息以及状态码1;
- 客户端选择课程,进入主界面;
- 客户端开始录制视频,并向服务器发出传文件请求(文件名),服务器端响应1(状态码2:表示接收到文件名),客户端发送校验值,服务器端响应2(状态码3:表示接收到响应值),客户端发送视频数据,服务器循环接收视频数据,客户端发送完成后主动断开连接,服务器端检测到网络连接断开(文件传输完成或者网络中断,保存文件并进行文件校验,如果通过则向数据库写入视频文件路径,不通过则放弃文件),服务器向客户端返回状态码3:表示视频文件是否正确完成传输。
- 客户端结束录制或者关闭时,向服务器发出结束信号,服务器端完全清除客户端连接信息。
A1. 需要考虑的问题
问题 | 解决方案 | 备注 |
---|---|---|
如何处理并发情况? | 服务器端采用多线程编程,程序模型采用manager/workers | |
服务器端如何表示客户端? | 使用自定义的数据结构来表征不同的客户端连接 | 具体实现见《Linux服务器端程序设计》 |
如何保证传输过程中的密码安全? | 避免使用明文传送,可以使用MD5加密 | |
如何保证传输的视频数据完整性? | 进行完整性校验,在传送视屏前发送校验值(传输校验值时使用CRC校验) |