【发布时间】:2015-02-25 14:31:39
【问题描述】:
我正在尝试创建一个类,它将多种类型的变量组合成一个变量,该变量可用于发送到远程机器并根据这些数据重建类。
您将构建一个新数据包,该数据包将具有“数据变量”,不确定这应该是什么类型的变量,网络库允许将数据作为“const void *”发送
DataPacket *Packet = new DataPacket();
将数据添加到数据包中,这将传递您指定类型的值并将其“附加”到“数据变量”的末尾
Packet.AddData<int>(45);
Packet.AddData<bool>(true);
Packet.AddData<const char*>("Test");
发送数据包,这实际上会通过网络库将“数据变量”发送到远程机器
Packet.Send();
在接收机器上构造一个数据包,将我们发送的“数据变量”传递给它,这将构造一个从发送机器发送的数据包的副本
DataPacket *Packet = new DataPacket(Data);
每次调用 GetData 时,以与写入数据相同的顺序从“数据变量”中读取数据。
int Var1 = Packet.GetData<int>();
bool Var2 = Packet.GetData<bool>();
const char* Var3 = Packet.GetData<const char*>();
我很困惑的是这个“数据变量”应该是什么类型的变量,如何从这个“数据变量”构造一个相同的数据包,以及如何将变量放入和取出“数据变量”设置类似函数。
【问题讨论】:
-
您正在寻找的是一个序列化库。试试Boost.Serialization。
-
我宁愿不使用 Boost
-
你不应该重新发明轮子,尤其是在一个比最初看起来更棘手的领域...... ;-]
标签: c++ sockets templates c++11 packet