Я пытаюсь вместе взломать клиента на C ++, используя буферы протокола Google и boost :: asio.
Моя проблема в том, что я не знаю, как я может передать сообщение 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. Есть несколько руководств, но они обычно просто охватывают отправку стандартных форматов данных, таких как ints, что работает "из коробки". Я решил, что моя проблема в сериализации , но, с другой стороны, я узнал, что protobuf должен сделать это за меня ... и теперь я запутался;)
Спасибо за вашу помощь!
-> Дэниел Геригер предоставил решение, большое спасибо!