fastdfs-通信协议-自定义指令码拓展

文章目录

    • 一、fasdfs 通信协议
      • 1. 公共命令码
      • 2. 发送给storage server的命令码
    • 二、fastdfs storage自定义指令码
      • 1. 自定义storage server的命令码:计算文件md5
    • 三、参考

一、fasdfs 通信协议

官方参考:https://mp.weixin.qq.com/s/lpWEv3NCLkfKmtzKJ5lGzQ
在这里插入图片描述
FastDFS采用二进制TCP通信协议。一个数据包由 包头(header)和包体(body)组成。包头只有10个字节,格式如下

@ pkg_len:8字节整数,body长度,不包含header,只是body的长度
@ cmd:1字节整数,命令码
@ status:1字节整数,状态码,0表示成功,非0失败(UNIX错误码)

代码如下,我们看到 cmd 作者用了 char型,char只有一个字节,
char 类型也是一个标准的整数类型。但是,仅有一个单词的类型名称 char,既可以是 signed char 的同义词,又可以是 unsigned char 的同义词,这由编译器决定。因为这是由所采用的实现版本自行选择的,所以严格地说,char、signed char和unsigned char 是三种不同的数据类型。

如果程序会用到的 char 值包括小于 0 或大于 127 的情况,则应该使用 signed char 或者 unsigned char,而不是 char。

标准整数类型常见存储空间大小和取值范围
类型 存储空间大小 最小值 最大值
char (与 signed char 或 unsigned char 相同)
unsigned char 1个字节 0 255
signed char 1个字节 -128 127

typedef struct
{char pkg_len[FDFS_PROTO_PKG_LEN_SIZE];  //body length, not including headerchar cmd;    //command codechar status; //status code for response
} TrackerHeader;

因此,作者的指令码都在 0-127之间。

数据包中的类型说明:

1) 整数类型采用网络字节序(Big-Endian࿰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/781802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言例题,逐个打印数字

今天来分享个比较简单的程序例题,也是比较经典的一个新手例题,逐个打印输入的数字。我们直接从主函数看起,先定义一个num变量,同时变量的类型是unsigned int,这个类型的意思是无符号的整型变量,unsigned&am…

代码随想录算法训练营Day39|LC62 不同路径LC63 不同路径II

一句话总结:不是太难,状态转移方程好想。 原题链接:62 不同路径 位置为(i, j)的点只能从上面或者左边过来,由此可列出状态转移方程。状态转移方程的初始化为所有第一排和第一列的点都初始化为1即可。 class Solution {public i…

SD-WAN网络构建要点简述

近年来,SD-WAN已成为企业网络优化的热门选择。SD-WAN代表软件定义广域网,是一种基于软件的网络解决方案,旨在提高企业网络连接的可靠性、安全性和性能。相比传统网络架构,SD-WAN技术通过虚拟化网络通信,利用智能软件和…

数据结构进阶篇 之 【二叉树顺序存储(堆)】的整体实现讲解(赋完整实现代码)

做人要谦虚,多听听别人的意见,然后记录下来,看看谁对你有意见 一、二叉树的顺序(堆)结构及实现 1.二叉树的顺序结构 2.堆的概念及结构 3.堆的实现 3.1 向下调整算法 AdJustDown 3.2 向上调整算法 AdJustUP 3.3 …

AndroidStudio出现类似 Could not create task ‘:app:ToolOperatorDemo.main()‘. 错误

先看我们的报错 翻译过来大概意思是:无法创建任务:app:ToolOperatorDemo.main()。 没有找到名称为“main”的源集。 解决方法&#xff1a; 在.idea文件夹下的gradle.xml文件中 <GradleProjectSettings>标签下添加<option name"delegatedBuild" value"f…

PG 数据库结构迁移注意事项

PG13 或者以上版本导出表结构然后去 PG13 以下版本来恢复记得 导出的时候添加上 --no-toast-compression PG13 版本建表语法 [postgres ~/lxm/2024-03-06/test_data/public_schema]$ psql psql (13.2) Type "help" for help.[postgrescqbm301017:5779/(rasesql)pos…

这样使用ChatGPT,效率翻倍不是梦!四大秘诀公开

随着ChatGPT技术的不断革新&#xff0c;它在我们日常工作中扮演着越来越重要的角色。那么&#xff0c;我们该如何利用ChatGPT来解决工作难题呢&#xff1f; Q1&#xff1a;想要迅速获得ChatGPT的帮助&#xff0c;我们应如何提出问题&#xff1f; 以下是几条高效提问的建议&…

powershell 基本使用

一、基础 查看powershell版本.通过内置变量可以查看 $PSversionTable1.模糊查询命令 help *service* : 查询包含关键字得命令2.获取所有命令 get-command3.获取命令帮助信息 get-help 命令 或者 help 命令4.查看别名命令得全称 get-alias -name ls5.powershell脚本 默认…

前端学习<二>CSS基础——11-CSS3属性详解(一)

前言 我们在上一篇文章中学习了CSS3的选择器&#xff0c;本文来学一下CSS3的一些属性。 本文主要内容&#xff1a; 文本 盒模型中的 box-sizing 属性 处理兼容性问题&#xff1a;私有前缀 边框 背景属性 渐变 文本 text-shadow&#xff1a;设置文本的阴影 格式举例&…

FPGA芯片在通信基站中的作用

基站作为移动通信系统的核心组成部分&#xff0c;承担着信号的发送和接收任务&#xff0c;包括天线、射频前端、数字信号处理和控制等功能。 随着通信技术不断进步和网络容量的提升&#xff0c;基站功能日益复杂&#xff0c;数量也在增加。 与此同时&#xff0c;FPGA芯片被广…

@EnableWebMvc 导致自定义序列化器失效

目录 前言 一. 自定义序列化器失效 1.1 EnableWebMvc 的作用 1.2 EnableWebMvc 带来了什么后果 1.3 原理分析 1.4 问题解决 二. 总结 前言 在使用Swagger的时候用 到了EnableWebMvc&#xff0c;发现之前为了解决Long类型、日期类型等自定义序列化器失效了 Configurati…

【送书福利第六期】:《AI绘画教程:Midjourney使用方法与技巧从入门到精通》

文章目录 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》二、内容介绍三、作者介绍&#x1f324;️粉丝福利 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》 一本书读懂Midjourney绘画&#xff0c;让创意更简单&#xff0c;让设计…

如何在Linux系统部署ONLYOFFICE协作办公利器并实现多人实时编辑文档

文章目录 1. 安装Docker2. 本地安装部署ONLYOFFICE3. 安装cpolar内网穿透4. 固定OnlyOffice公网地址 本篇文章讲解如何使用Docker在本地服务器上安装ONLYOFFICE&#xff0c;并结合cpolar内网穿透实现公网访问。 Community Edition允许您在本地服务器上安装ONLYOFFICE文档&…

Makefile:运行流程解析(五)

当输入make并且进行回车时&#xff0c;首先回去检查对应的目录下是否有Makefile或者makefile文件如果有文件那么执行指定的目标&#xff08;没有指定目标默认第一个目标为最终目标&#xff09;&#xff0c;如果没有对应的文件&#xff0c;报错执行结束对于最终的目标首选检查是…

ubuntu常用记录

常用命令 ps aux |grep ... pip show pkgname nvidia-smi -l du -sh * df -h head -n 10 file.txt htop sudo apt install package_name kill process_id 软链接 在 Linux 中&#xff0c;软连接&#xff08;Symbolic Link&#xff0c;也称为符号链接或软链接&#xff09;是一…

【回溯与邻里交换】纸牌三角

1.回溯算法 旋转有3种可能&#xff0c;镜像有2种 所以最后次数&#xff1a;counts/3/2 #include<iostream> using namespace std;int num[9]; int counts0; bool bools[9];//默认为false int dfs(int step){if(step9){//索引 if((num[0]num[1]num[2]num[3]num[3]num[4]n…

【御控物联】JavaScript JSON结构转换(12):对象To数组——键值互换

文章目录 一、JSON结构转换是什么&#xff1f;二、核心构件之转换映射三、案例之《JSON对象 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么&#xff1f; JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换…

Java类与对象:从概念到实践的全景解析!

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、类的定义格式 在java中定义类时需要用到…

【华为OD机试】全量和已占用字符集 、字符串统计【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 给定两个字符集合,一个是全量字符集,一个是已占用字符集,已占用字符集中的字符不能再使用。 要求输出剩余可用字符集。 输入描述 输入一个字符串 一定包含@,@前为全量字符集 @后的为已…

LabVIEW车载轴承振动监测系统

LabVIEW车载轴承振动监测系统 随着汽车工业的快速发展&#xff0c;车用轴承的稳定性和可靠性对保障车辆安全运行越来越重要。目前&#xff0c;大多数车用轴承工作在恶劣的环境下&#xff0c;容易出现各种故障。开发了一种基于LabVIEW的车载轴承振动监测系统&#xff0c;提高车…