TLV通信协议以及简单的函数封装

TLV协议是一种通信协议,包含标签域、长度域和内容域。本文介绍了TLV的基本结构,以及字节流和字符流的区别。并提供了一个简单的TLV函数封装示例,用于在传输过程中对数据进行封装。
摘要由CSDN通过智能技术生成

1.什么是TLV

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

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

TLV协议也是通信协议中的一种,通常分为三部分:标签域(Tag)、长度域(Length)和内容域(Value)。通常情况下分为这三种,但很多时候为了保证数据传输的可靠性,我们通常会加上报文头(Head)和校验和(CRC) 来增加数据的可靠性!

其实说白了,当有数据发过来的时候,我们想知道这是什么数据、数据有多大以及数据内容是什么。这里的什么数据就是Tag,有多大就是Length,数据内容就是Value。通信协议就相当于两个说话前先规定说什么话双方才能听懂!通信双方的一种规约,数据应该怎么封装以及收到数据该怎么解析!

2.字节流和字符流

2.1字节流

我们上面说到的TLV协议采用的就是字节流,字节流就是按字节的方式处理和存储数据,字节流是由字节组成的。
如:0x20 0x19 0x12 0x32 0x24

2.2 字符流

字符流是由字符组成的。也就是按字符串的方式处理和存储数据。
如:例如 FileReader、FileWriter、BufferedReader

3.TLV的结构

简单的TLV结构:
在这里插入图片描述
有文件头和检验和的TLV结构:
在这里插入图片描述复合的TLV结构:
在这里插入图片描述

4.简单的TLV函数封装

在我们确定了通信协议TLV之后,在传输的过程中需要对采样的数据进行函数的封装再进行发送。

代码如下:

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值