哈希游戏竞猜游戏系统开发源码方案丨hash哈希竞猜游戏系统开发源码搭建

简介: 哈希游戏竞猜游戏系统开发源码方案丨hash哈希竞猜游戏系统开发源码搭建

通信协议可以理解两个节点之间为了协同工作实现信息交换,协商一定的规则和约定,例如规定字节序,各个字段类型,使用什么压缩算法或加密算法等。常见的有tcp,udp,http,sip等常见协议。协议有流程规范和编码规范。流程如呼叫流程等信令流程,编码规范规定所有信令和数据如何打包/解包。

编码规范就是我们通常所说的编解码,序列化。不光是用在通信工作上,在存储工作上我们也经常用到。如我们经常想把内存中对象存放到磁盘上,就需要对对象进行数据序列化工作。

本文采用先循序渐进,先举一个例子,然后不断提出问题-解决完善,这样一个迭代进化的方式,介绍一个协议逐步进化和完善,最后总结。看完之后,大家以后在工作就很容易制定和选择自己的编码协议。

紧凑模式

本文例子是A和B通信,获取或设置基本资料,一般开发人员第一步就是定义一个协议结构:

struct userbase
{
//1-get, 2-set, 定义一个short,为了扩展更多命令
unsigned short cmd;

//1 – man , 2-woman
unsigned char gender;

//当然这里可以定义为 string name;或len + value 组合,

   为了叙述方便,就使用简单定长数据

char name[8];
}
在这种方式下,A基本不用编码,直接从内存copy出来,再把cmd做一下网络字节序变换,发送给B。B也能解析,一切都很和谐愉快。

这时候编码结果可以用图表示为(1格一个字节)

这种编码方式,我称之为紧凑模式,意思是除了数据本身外,没有一点额外冗余信息,可以看成是Raw Data。在dos年代,这种使用方式非常普遍,那时候可是内存和网络都是按K计算,cpu还没有到1G。如果添加额外信息,不光耗费捉襟见肘的cpu,连内存和带宽都伤不起。

可扩展性
有一天,A在基本资料里面加一个生日字段,然后告诉B

struct userbase
{

unsigned short cmd;
unsigned char gender;
unsigned int birthday;
char name[8];

}
这是B就犯愁了,收到A的数据包,不知道第3个字段到底是旧协议中的name字段,还是新协议中birthday。这是后A,和B终于从教训中认识到一个协议重要特性——兼容性和可扩展性。

于是乎,A和B决定废掉旧的协议,从新开始,制定一个以后每个版本兼容的协议。方法很简单,就是加一个version字段。

struct userbase

相关文章
|
机器学习/深度学习 存储 监控
「Arm Arch」 初识 Arm(上)
「Arm Arch」 初识 Arm(上)
1296 1
|
弹性计算 IDE Linux
服务器部署 code-server
记录服务器部署 code-server实际操作中的一些坑,大家避坑!!!
3944 1
服务器部署 code-server
|
XML 存储 C#
自己动手做一个批量doc转换为docx文件的小工具
自己动手做一个批量doc转换为docx文件的小工具
406 0
|
前端开发 应用服务中间件 API
|
SQL 存储 大数据
大数据中数据提取
【10月更文挑战第19天】
571 2
|
机器学习/深度学习 自然语言处理 数据可视化
开箱即用!智能文档处理“百宝箱“
10 月 24 日至 26 日,CSDN 第五届“1024 程序员节”在长沙召开。合合信息的常扬老师分享了智能文档处理“百宝箱”,包括 TextIn ParseX、acge-embedding 和 markdown_tester 三种工具。这些工具解决了文档解析中的版式复杂、解析错误、语义信息丢失等问题,适用于文字工作者和机器学习研究人员。TextIn ParseX 是一个可视化工具,支持多种格式输出,acge-embedding 模型用于文本向量化,而 markdown_tester 则用于文档解析效果的定量评估。
296 0
|
应用服务中间件
入职必会-开发环境搭建23-IDEA配置Tomcat
IDEA配置Tomcat分为两部分: 1. IDEA集成本地Tomcat 2. IDEA中使用Tomcat部署Web项目 在配置IntelliJ IDEA中的Tomcat时,首先需要打开IDEA,选择菜单中的Run -> Edit Configurations,在左侧菜单中找到+并点击,然后选择Tomcat Server下的Local(注意不要选择错了,下方还有个TomEE Server,不是选这个)。接下来,输入一个自定义的名字作为Tomcat的配置名称,点击Configure...配置Tomcat的安装路径。这样IDEA就配置好了Tomcat。
481 1
|
机器学习/深度学习 人工智能 Java
人工智能平台PAI使用问题之Java SDK支持哪些版本
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
机器学习/深度学习 人工智能 监控
人工智能在金融风险管理中的应用
人工智能在金融风险管理中的应用已经取得了显著的进展,并在提高风险管理效率和准确性方面发挥了重要作用。通过信用评估、欺诈检测、投资组合管理等应用,人工智能为金融行业带来了新的机遇和挑战。然而,我们也要认识到人工智能在风险管理中可能面临的隐私、解释性和偏差等问题。未来,随着技术的发展,人工智能将在金融领域持续发挥重要作用,为金融行业创造更加安全和稳健的环境。
1515 1