我正在阅读UDP daytime example
来自 boost asio 的教程。它使用 arecv_buffer_
和 usesasync_receive_from()
来运行接收循环。
socket_.async_receive_from(
boost::asio::buffer(recv_buffer_), remote_endpoint_,
boost::bind(&udp_server::handle_receive, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
我不明白的是
boost::array<char, 1> recv_buffer_;
为什么它的大小是一?如果收到的消息长度超过一个字节怎么办?
编辑
正如@Guy Sirton 指出的那样,我错过了写在该页面中的 hsi 部分。
由于我们只提供 1 字节的 recv_buffer_ 来包含客户端的请求,因此如果客户端发送了更大的请求,io_service 对象将返回错误。如果出现这样的错误,我们可以忽略它。
但是无论如何都可以在没有缓冲区大小的情况下阅读整个消息?像循环receive_some
每个字符并存储在字符串中?