【发布时间】:2014-05-01 16:26:31
【问题描述】:
我需要序列化不同的对象(到消息)并通过 tcp 连接发送到服务器(客户端和服务器都是 c++),我不能使用 protobuf(只有 boost 库可用)。是否已经有算法或示例,或教程如何做到这一点(我需要考虑消息会发生变化,带有附加字段的新版本)。
class Message {
public:
char type;
char version;
};
class Register : public Message {
public:
// version 1 of Register message
string first_name;
string last_name;
};
class Register : public Message {
public:
// version 2 of Register message
string first_name;
string last_name;
long salary;
};
class ChangeName : public Message {
public:
// version 1 of ChangeName message
string first_name;
};
// this is going to be transmitted ower tcp (length + type + version + data) like array of bytes
class TransmissionMessage {
public:
uint32_t length;
char type;
char version;
char data[length];
};
目前我有一个用于传输的类,它具有包含消息类型、消息版本和长度和正文的固定标头 /body 是包含来自消息类的序列化字段的字符数组,客户端和服务器上的实现相同 em>/),但我不确定这是最好的方法,有没有更好的方法。
【问题讨论】:
-
在此处查找demonstration of versioning with Boost Serialization。请参阅here 了解您可能需要的 EOS 便携式存档。其余的,这个问题似乎过于宽泛。投票结束。