如何定义协议-简单

一般的通信协议:数据包= 包头(命令码(1字节)+数据长度(2字节) ) + 数据(n字节)

包含的信息有:指令、源地址、目的地址、数据、校验等部分。

链路层协议:帧头 + 地址 + 命令字 + 数据 + 校验位(帧尾)

不要使用结构体,因为结构体必须定义足够的字符串的长度,这个长度当然是要适应最坏的情况,比如文件名为MAX_PATH的长度,但事实上,在很多情况下,我们实际传输的文件名长度并不需要这么多,这就加剧了网络传输的负担,降低了效率。

最好的通讯方式应该是:

定义数据包头 + 数据体

数据包头中包括:版本、数据包的长度(包头+包体,或只有包体,视你的兴趣和具体问题而定),包体标号(顺序号)等

包体中的数据包括:实际的数据。

其中包头信息的每个字段应该规定一定的长度。


校验方式: CRC校验  、 异或校验


  • 来看看socket 通信协议的制定

参考地址:http://www.cnblogs.com/kevinGao/archive/2011/11/07/2238880.html      

数据报协议格式:

       数据包:报文长度+帧头+终端编号+命令字+总帧数+第几帧+内容+校验+状态+帧尾

       说明:  每条消息以0x00开始,以0xFF结尾。

       每条消息只能发送一个命令字,每条消息的最长长度为1024(包括1024字节),超过1024的部分分批发送,以此循环。读取数据时,内容默认为0x00。

终端编号以“K0000001“来举例

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值