我正在尝试使用Google Protocol Buffers和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的工作原理。有一些教程,但它们通常只涵盖发送标准数据格式,例如整数,这可以直接使用。我觉得我的问题是序列化,但另一方面我了解到protobuf应该为我完成这项工作......现在我感到困惑 ;)
谢谢您的帮助!
--> Daniel Gehriger提供了解决方案,非常感谢!