1
我试图从一个async_receive调用接收许多udp消息。我的信息是约。长度为60个字节。boost :: asio udp - 如何获得很多可变缓冲区?
我给一个async_receive
调用一个缓冲阵列非常相似的提升文档,但似乎无法得到全部填满缓冲区。
char d1[128];
char d2[128];
char d3[128];
boost::array<boost::asio::mutable_buffer, 3> bufs =
{
boost::asio::buffer(d1),
boost::asio::buffer(d2),
boost::asio::buffer(d3)
};
_socket.async_receive(bufs, handler);
当我的处理程序被调用时,bytes_transferred
等于一个消息长度(即60)。
我如何能获得第二和第三缓冲任何想法填充?另外,如果第二个和第三个可变缓冲区被填充,我现在该如何?
发布了一些我们可以编译的代码,你的伪代码并不足够准确地描述问题。 – 2010-07-26 19:45:13
如果您需要填充多个缓冲区,则必须对async_receive()进行多次调用。每次调用async_receive()都会收到一个UDP数据报(并且不行,您不应该在连续两次调用async_receive())。另一个故事是,例如将消息的头部和正文接收到两个缓冲区中。 – 2011-03-14 15:51:14