adi*_*i64 11 c++ networking boost protocol-buffers boost-asio
我试图使用Google的Protocol Buffers和boost :: asio在C++中一起破解客户端.
我的问题是我不知道如何将protobuf消息提供给asio.我有的是这个:
// set up *sock - works
PlayerInfo info;
info.set_name(name);
// other stuff
Run Code Online (Sandbox Code Playgroud)
现在我知道以下是错误的,但我会发布它:
size_t request_length = info.ByteSize();
boost::asio::write(*sock, boost::asio::buffer(info, request_length));
Run Code Online (Sandbox Code Playgroud)
我知道我必须以不同的方式将我的信息打包到缓冲区 - 但是如何?
一般来说,我很难搞清楚boost :: asio是如何工作的.有一些教程,但它们通常只包括发送标准数据格式,如ints,它是开箱即用的.我认为我的问题是序列化,但另一方面我了解到protobuf应该为我做这个......现在我很困惑;)
谢谢你的帮助!
- > Daniel Gehriger提供了解决方案,非常感谢!
Dan*_*ger 10
我对Google的协议缓冲区了解不多,但请尝试以下方法:
PlayerInfo info;
info.set_name(name);
// ...
boost::asio::streambuf b;
std::ostream os(&b);
info.SerializeToOstream(&os);
boost::asio::write(*sock, b);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6405 次 |
| 最近记录: |