Отправка сообщений Protobuf с помощью boost :: asio

Я пытаюсь вместе взломать клиента на 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 должен сделать это за меня ... и теперь я запутался;)

Спасибо за вашу помощь!

-> Дэниел Геригер предоставил решение, большое спасибо!

11
задан NmdMystery 9 January 2014 в 04:52
поделиться