c语言自定义数据包协议,C语言——变长数据包pdu(协议数据单元protocol data unity)...

变长结构体

首先写介绍下变长结构体:

struct Var_Len_Struct

{

int nsize;

char buffer[0];

};

大概就是通过 nsize记录 长度     buffer储存数据

其中  char buffer[0]  为固定写法  一定要为 字符数组  且 个数为0 (也可写为4)

详见:

https://blog.csdn.net/pi9nc/article/details/11924295

变长pdu就是运用了变成结构体,让传输数据时可以根据要求申请不同的合适的大小的数据包。

头文件:

35ff20f77200

pdu

其中uint 即 unsigned int

这里 必须的时 uiPDULen  uiMsgLen caMsg

其他的根据情况自己定义需传输的内容

生成PDU:

35ff20f77200

mkPDU

根据传输内容的大小生成一个PDU指针

这里根据MsgLen来确定 PDU的总大小 uiPDULen

通过 malloc 为 PDU 再堆上建立空间

发送PDU:

35ff20f77200

sendPDU

向指定 socket 写入 PDU

由于PDU大小不确定 所以 一次 传 4096

接收PDU:

35ff20f77200

revPDU

接收时 先读取 PDU 大小  再为其申请空间

值得注意的是 接收数据时 指针要先偏移之前读取PDU大小时所读取的数据大小

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值