【发布时间】:2011-01-26 21:06:06
【问题描述】:
我正在尝试使用 Google 的协议缓冲区和 boost::asio 在 C++ 中一起破解客户端。
我的问题是我不知道如何将 protobuf 消息提供给 asio。 我有的是这样的:
// set up *sock - works
PlayerInfo info;
info.set_name(name);
// other stuff
现在我知道以下是错误的,但我还是会发布它:
size_t request_length = info.ByteSize();
boost::asio::write(*sock, boost::asio::buffer(info, request_length));
据我所知,我必须以不同的方式将消息打包到缓冲区中 - 但是如何?
一般来说,我很难弄清楚 boost::asio 的工作原理。有一些教程,但它们通常只涵盖发送标准数据格式,例如 int,它可以开箱即用。我认为我的问题是 序列化,但另一方面,我了解到 protobuf 应该为我做这件事......现在我很困惑;)
感谢您的帮助!
--> Daniel Gehriger 提供了解决方案,非常感谢!
【问题讨论】:
标签: c++ networking boost boost-asio protocol-buffers