Привет всем.
Недавно начал изучать буст. Никак не могу понять где ошибся. Есть такой участок кода:
unsigned short int cmd=1;
size_t size=99;
boost::array<boost::asio::const_buffer, 2> buffers =
{
boost::asio::buffer(&cmd, sizeof(cmd)),
boost::asio::buffer(&size,sizeof(size)),
};
boost::asio::async_write(csocket,buffers,
boost::bind(&client::handle_write,
this,
boost::asio::placeholders::error));
дело в том что принимающая сторона отлично принимает cmd, а вот size — не может принять почему-то.
Даным кодом заменил последовательную отправку cmd и size
boost::asio::async_write(csocket,boost::asio::buffer(&cmd, sizeof(cmd)),
boost::bind(&client::handle_write,
this,
ba::placeholders::error));
...
boost::asio::async_write(csocket,boost::asio::buffer(&size, sizeof(size)),
boost::bind(&client::handle_write,
this,
boost::asio::placeholders::error));
До этого все работало, но хотелось отправить одним махом все части сообщения (участки кода приведенные здесь сильно упростил, но думаю смысл понятен).
Подозреваю что ошибка где-то в обьявлении buffers, но не могу понять где. Может всезнающий All подскажет где я ошибся, или посоветует как можно иначе отправить несколько буферов одной командой. Если уже где-то обсуждалось, прошу ткнуть носом, так как к сожалению поиск по сайту не работает (сильно обрезан доступ к сайтам с работы ((()
Насколько я помню, буфер с отправляемыми данными должен существовать до вызова handler_write.
Если переменные cmd и size — локальные, то на отправку может пойти что угодно