【发布时间】:2013-03-10 13:21:16
【问题描述】:
我正在尝试从一个 async_receive 调用接收许多 udp 消息。我的信息大约是。 60 字节长。
我正在给async_receive 调用一个缓冲区数组,该数组与 boost 文档非常相似,但似乎无法填满所有缓冲区。
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)。
关于如何填充第二个和第三个缓冲区有什么想法吗?另外,如果填充了第二个和第三个可变缓冲区,我现在该怎么办?
【问题讨论】:
-
贴一些我们可以编译的代码,你的伪代码描述的不够准确。
-
如果您需要填充多个缓冲区,则必须多次调用 async_receive()。每次调用 async_receive() 都会收到一个 UDP 数据报(不,您不能连续调用两次 async_receive())。另一个故事是,例如将消息的标题和正文接收到两个缓冲区中。
标签: c++ boost boost-asio