美文网首页
C语言——变长数据包pdu(协议数据单元protocol dat

C语言——变长数据包pdu(协议数据单元protocol dat

作者: B_____b | 来源:发表于2019-04-03 11:50 被阅读0次

变长结构体

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

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就是运用了变成结构体,让传输数据时可以根据要求申请不同的合适的大小的数据包。

头文件:

pdu

其中uint 即 unsigned int

这里 必须的时 uiPDULen  uiMsgLen caMsg

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

生成PDU:

mkPDU

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

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

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

发送PDU:

sendPDU

向指定 socket 写入 PDU

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

接收PDU:

revPDU

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

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

相关文章

网友评论

      本文标题:C语言——变长数据包pdu(协议数据单元protocol dat

      本文链接:https://www.haomeiwen.com/subject/wsuabqtx.html