文件同步精灵(初版)-- 协议介绍(源码公开)

简介:

“文件同步精灵”的介绍请查看《  文件同步精灵(初版) 》

 概念解析:

* 协议包:客户端与服务器的进行功能交互时传递的数据包。

* 协议头:协议包的前4个字节则称为“协议头”。

* 协议码:用数值代表的操作码,主要是用于区分不同的操作,比如上传文件是601,而下载文件则是602等。

 

一、协议包格式: 

协议包是由“协议头”与“数据块”组成,其中在一个协议包中“协议头”是必须存在的!

黄色区域中的数据块的大小N将由浅绿色区域的值决定,也就是N的值范围是0...65535,比如浅绿色区域的值是0x64时,则黄色区域的数据是100Byte,而如果值为0则黄色区域的数据块为空!

 

二、协议码

协议码是用于区分每种功能操作,目前共有以下几种定义:

Code

 

 

三、密码验证:

客户端与服务端在交互时,必须先通过密码验证才能进行其它操作(比如上传文件)。而为了确保密码在传输过程中不被窃取所以必须先对密码进行加密再传输。为方便客户端与服务端的加解密,采用的是类似于“证书”方式,也即客户端需要加密密码时,必须先向服务端请求加密密匙!

大概的流程如下:

也取是客户端首先发送“协议码”为501的协议包到服务端,服务端收到后将返回一个“协议码”为505的协议包给客户端,客户端再从协议包中取得加密密匙,并使用加密密匙对验证密码进行加密并发送“协议码”为502的协议包,服务端接收到协议包后对其中的加密数据进行解密并判断验证密码的正确性,并将结果(协议包)返回给客户端,从而完成密码验证过程。

 

四、文件操作:

为方便说明,对目录或文件的操作都统称为“文件操作”。

1)文件消息包:由文件消息包头文件数据组成。

主要是用于存放要操作的文件信息,格式定义如下:    

    

注:虚线框内的则是“文件消息包头”,每个文件消息包中必须存在文件消息包头!

文件类型是采用以下的定义:

Code

 

其中IsMulriple是服务器传送多个文件数据到客户端时使用的标记,用于区分当前文件消息包后是否还有下一个文件消息包。黄色区域的文件数据多少则由灰色块的文件大小决定,而如果文件消息包是针对目录,则文件大小的值为0且文件数据块为空!

 

2) 文件协议包

将文件消息包数据放入协议包中的黄色区域块,协议包的数据大小值为文件消息包头的大小,则构成文件协议包。如下图:

 

3) 上传文件流程:

客户端发送一个“协议码”为601的文件协议包,服务器收到协议包后进行处理并返回结果。

 

4)下载文件流程:

客户端发送一个“协议码”为602的文件协议包(空文件数据),服务器收到协议包根据情况进行处理,并返回一个或多个“协议码”为605的文件协议包给客户端。

5)删除文件流程:

客户端发送一个“协议码”为603的文件协议包,服务器收到协议包后进行处理并返回结果。

 

五、断开会话:

当双方还处于连接状态并且某一方需要断开会话时则发送“协议码”为886的协议包给对方。

 

源码下载http://files.cnblogs.com/kingthy/FileSynchronizer_src.rar 

 

注:以上的协议定义并不是稳健的,如果哪位有需要的可以直接使用,但出现问题本人概不负责!如果你对此协议进行了扩展修改并且方便的望能发一份源码给我。谢谢!!

本文转自Kingthy博客园博客,原文链接:http://www.cnblogs.com/kingthy/archive/2008/09/24/1298240.html ,如需转载请自行联系原作者
相关文章
|
网络协议 Linux 网络安全
文件共享同步5种方式:NFS、NAS、rsync、scp、ftp
谈到文件同步,我们最直接的同步方式是采用rsync的同步软件,rsync同步可以保持server和client的强一致(server中的增删改都会同步client),但在实际场景中rsync可能并不能被采纳。
18455 0
|
9月前
|
缓存 物联网 数据库
InfluxDB vs TDengine :2025 年了,谁家用的数据库还不能高效读缓存?
在工业互联网和物联网的大数据应用场景中,实时数据的写入和查询性能至关重要。如何快速获取最新设备状态并实时处理数据,直接影响到业务的高效运转。本文将深入分析 TDengine 和 InfluxDB 在缓存机制上的差异,帮助读者更好地理解这两款主流时序数据库在性能优化方面的优劣。
824 1
|
Java Spring
案例08 AOP方式实现日志记录案例
采用AOP的面向切面编程方式,对学生信息管理系统中的新增学生信息、更新学生信息和删除学生信息3个方法实现日志记录业务。
161 0
|
3天前
|
人工智能 运维 安全
|
1天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
9天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
795 109
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
359 9