美文网首页
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