现阶段,我在收到数据后,总喜欢将数据拷贝要临时空间去。然后再对数据进行分析,处理。 这样做在代码中间会申请很多的临时空间,代码看上去也很乱。
例:
struct Firmware
{
unsigned int token;
struct version_s
{
int year:12;
int month:4;
int day:5;
int hour:5;
int min:6;
}version_t;
int armSize;int fpgaSize;
};
Firmware firmware_;
len = recvfrom(s, buffer,
sizeof
(buffer), 0, (structsockaddr*)&addr, (socklen_t*)
&addr_len);
unsigned char *tempBuff = new unsigned char [len];
if(0 < len)
{
memcpy(tempBuff, buffer, len);
memcpt(firmware_, tempBuff, sizeof(Firmware));
//然后才对firmware进行解析和操作
}
其实有更简单的方法:
Firmware *firmware = (Firmware*)(&buffer);
//然后直接对firmware进行解析和操作