变长结构体
首先写介绍下变长结构体:
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大小时所读取的数据大小
网友评论