封装memcpy()
#define FUNC_POOL \
bool payload_cur_info(Net_Carrier *NetPak, uint32_t size = NET_CARRIER_PAYLOAD_MAX_SIZE)\
{\
uint32_t self_size=sizeof (*this);\
NetPak->_payload_size = sizeof(*this);\
if(self_size<=size)\
{\
memcpy_s(NetPak->_payload,size,this,self_size);\
return true;\
}else{\
return false;\
}\
}\
uint32_t get_payload_size()\
{\
return sizeof(*this);\
}
把数据存储为字符,存进字符流
//设置相机投影数据
struct topic_set_cam_projection_data
{
uint16_t _node_id;
TYPE_cam_projection_data CamProjectionData;//相机投影数据
std::string ToString()
{
std::stringstream ss;
ss << "_node_id:" << (int)_node_id << " ,";
ss << CamProjectionData.ToString();
return ss.str();
}
FUNC_POOL
};
Net_Carrier NetPack;
NetPack._msg_priorities = EMSG_PRIORITIY::GameNormal;
NetPack._source_node = E_NNODE_MSG_CONVER;
NetPack._target_node = E_NNODE_VISUAL;
NetPack._time_stamp = time(0);
NetPack._topic_id = E_TPC_SET_CAM_PROJECTION_DATA;
topic_set_cam_projection_data sysSetting;
sysSetting._node_id = id;
sysSetting.CamProjectionData._enable = enable;
sysSetting.CamProjectionData._top_clipping_angle = top;
sysSetting.CamProjectionData._bottom_clipping_angle = bottom;
sysSetting.CamProjectionData._left_clipping_angle = left;
sysSetting.CamProjectionData._right_clipping_angle = right;
//把这个结构体数据拷贝到另一个结构体
sysSetting.payload_cur_info(&NetPack);
QByteArray SendData;
int SendSize = 21+NetPack._payload_size;
SendData.resize(SendSize);
memcpy(SendData.data(),&NetPack,SendSize);
SendUdpData(SendData,QHostAddress(ip),port,msgType);