[英]How to transfer serialized data to the server and deserelize it
我用enet库写了客户端和服务器端的代码,也决定用boost库来序列化数据。 我使用类似这段代码的东西来发送数据并序列化它
char message_data[80] = "somedata";
std::stringstream ss;
boost::archive::binary_oarchive oa{ ss };
oa << message_data;
SendPacket(peer, ss.str());
以及类似这样的代码,用于获取数据并对其进行反序列化
std::string deser_data;
std::string some_data = (char*)event.packet->data;
std::stringstream ss(some_data);
boost::archive::binary_iarchive ia{ ss };
ia >> deser_data;
但是这段代码不起作用,我认为是由于错误使用了stringstream,但这并不准确
您是否有某些原因要使用二进制(不可移植、不容忍更改)表示? JSON 已经有点标准了。 是因为它可能...
我会添加一些调试。 你写的是多长? 你读的是多长? 如果您转储缓冲区,它们在客户端和服务器上是否相同?
如果您全部内联(不涉及网络),代码是否有效? 也就是说,你能不能写一个单元测试来做客户端和服务器端,你构造一个object,序列化它,反序列化成另一个object,然后比较它们?
我会从那开始。
抱歉,这不是一个正确的答案,但是对于简单的评论来说太长了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.