协议设计:可变长帧的实现

/*  
 *Author  : DavidLin         
 *Date    : 2014-12-25pm         
 *Email   : linpeng1577@163.com or linpeng1577@gmail.com         
 *world   : the city of SZ, in China         
 *Ver     : 000.000.001         
 *For     : threads for rxtx!      
 *history :     editor      time            do         
 *          1)LinPeng       2014-12-25      created this file!         
 *          2)         
 */  

        信令帧,数据帧的长度不同,不同数据帧之间的长度更是千差万别,所以通讯协议中,帧的可变长实现是有重要的现实意义的。如何实现:

        1.通过帧尾部的移位;

        2.逐层增加长度项。

        比如有2层协议

typedef struct net_packet_t {
    ip_packet_t    ip;
    size_t    size;    //用于获取ip包长度
};

typedef struct ip_packet_t {
    char head;
    char pay[MAX];     //需要移位变长
    size_t chksum;
    char tail;
};

phy_tx(&net,  net.size);    //发送格式,根据帧实际长度发送


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值