考资料:
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(Tag-Length-Value)是一种常见的数据编码格式,广泛应用于网络协议、数据库存储、配置文件等多个场景。本资料包提供了对TLV标准的深入分析以及相应的源码实现,帮助开发者更好地理解和运用这一...
在IT行业中,TLV(Tag-Length-Value)是一种常见的数据表示格式,用于结构化存储或传输数据。在Java开发中,实现TLV编码和解码是处理特定协议或数据交换时的重要技能。以下是对这个主题的详细阐述: TLV结构: TLV...
- OpenFlow 1.2 引入了一种基于 TLV (Type-Length-Value) 结构的新机制,这极大地增强了协议的灵活性,可以支持当前和未来的各种协议。 - **意义**: 这种机制使得 OpenFlow 协议能够更加灵活地应对不断变化的网络...
LWM2M(Lightweight Machine to Machine)是OMA(Open Mobile Alliance)制定的一种轻量级的物联网设备管理协议,旨在降低功耗、减少网络带宽需求,同时提供高效的远程设备管理和数据交换能力。LWM2MForLinux是针对...
SMSCBridge 对 TLV 的全面支持意味着用户可以自定义扩展字段,从而实现更复杂的业务逻辑,比如添加定制的头部信息、附加数据等。 4. **开源软件的优势** 作为开源软件,SMSCBridge 具有透明度高、可定制性强的特点...