自定义协议 与 TLV格式 的总结
来源:互联网 发布:装修公司网站源码 编辑:程序博客网 时间:2024/04/19 19:30
在实习的时候,听得最多的一个词就是协议了。串口通信,各种自定义的协议,说得我太晕了。反正我不懂,正好最近一直在打酱油,那我不趁机恶补恶补,说不定下学期在学网络编程的时候,可以用得到。。
参考资料:
http://blog.csdn.net/phunxm/article/details/5086080 应用层通信协议开发浅析
http://blog.csdn.net/chexlong/article/details/6974201 TLV 格式及编解码示例
找了一天资料,上面两个博客写得真心不错,还有源码对照。
这里说的协议,都是基于应用层的协议,一切应用层的“协议”说白了,就是“数据包的结构定义”。
至于TLV格式,就是Type-Lenth-Value 数据包里放数据,要么用定长,可么就用TLV这种可变长度的,其它深奥的不管。 定长的太浪费空间了。就用这种咯。
有关应用层协议,数据包的自我总结:
1. 应用层协议,就是 定义数据包的结构 的一种规格。
比如,定义一个 部标协议,规定数据包的格式为 包头+数据+校验码。采用TLV格式。
2. 数据包格式:(由协议规定的,以后我就统一使用下面这种常用格式)
1字节Start Flag + 2字节Length + n字节数据 + 1字节End Flag (最后这个 End Flag改成校验Flag也不错。。 以后要用时再考虑。)
start flag,lenth,end flag都是定长, 内容数据 采用 TLV格式,一个一个解析出来。
3. 在TCP通信中,数据包太大,网络会自动将之切割,到了目的地的时候会自己重组。 我们要做的时候就是 不断地从流中recv 包头中指定的长度 个字节就可以了。在读取的时候,注意不要读取太多。(串口通信就没这么方便了,我不会。不过公司里串口通信的数据包都好小。。)
4. 通信的双方约定好这种协议。将内容打包成数据包容易,将数据包解析成内容也容易。。( 打包和解析的目的要理解,打包就是一堆数据想要一次发送。 解析就是,从缓冲区一堆数据中,一条一条分析出来。。差不多这样子。。有时,也可以把一堆参数打包成一条字符串(其实这也是一个数据包), 也可以 把一条字符串,解析出一堆参数。。)
5.一个完整的数据包,就是一帧。。
以后学习网络编程,要发送数据包的时候再来实现。 先把上面两个网址的两个样例保存起来嘿嘿。
【原文:http://blog.csdn.net/a576323437/article/details/9668967】
- 自定义协议 与 TLV格式 的总结
- 自定义协议 与 TLV格式 的总结
- 报文协议中TLV格式
- 使用SuperSocket实现TLV自定义协议网络通信的Demo
- TLV-简单的数据传输协议
- TLV 协议
- TLV协议
- TLV格式和JAVABEAN的转换工具
- TLV格式是什么格式
- TLV 格式及编码
- TLV格式及编码
- TLV 格式及编码
- TLV 格式及编码
- 【TLV格式及编码】
- tlv 格式解析
- TLV格式说明
- TLV 格式及编码
- tlv - 可变编码格式
- C语言中的柔性数组
- 黑马程序员-面向对象
- 一个程序调用另一个程序 linux平台
- hdu oj 1010 老是超时 先放到这里 参考别人ac代码
- NYOJ238小明的调查作业
- 自定义协议 与 TLV格式 的总结
- ReportStudio入门教程(二十七) - 排序
- Integer to Roman & Roman to Integer
- 排序算法总结篇
- ZOJ-3778
- 二叉树的确定
- C语言测试题
- SQL SERVER 2008中输入汉字乱码的问题
- 开放平台