Ton*_*ion 6 c++ asynchronous boost-asio
我有一个服务器从客户端接收一个压缩字符串(用zlib压缩),我async_receive从boost::asio库中使用它来接收这个字符串,然而事实证明不能保证所有字节都将被接收,所以我现在有将其改为async_read.我面临的问题是接收的字节大小是可变的,所以我不知道如何在async_read不知道要接收的字节数的情况下使用.随着async_receive我只是有一个boost::array<char, 1024>,但是这是没有必要完全填满一个缓冲区.
我想知道是否有人可以建议我可以使用async_read的解决方案,即使我不知道提前收到的字节数?
void tcp_connection::start(boost::shared_ptr<ResolverQueueHandler> queue_handler)
{
if (!_queue_handler.get())
_queue_handler = queue_handler;
std::fill(buff.begin(), buff.end(), 0);
//socket_.async_receive(boost::asio::buffer(buff), boost::bind(&tcp_connection::handle_read, shared_from_this(), boost::asio::placeholders::error));
boost::asio::async_read(socket_, boost::asio::buffer(buff), boost::bind(&tcp_connection::handle_read, shared_from_this(), boost::asio::placeholders::error));
}
Run Code Online (Sandbox Code Playgroud)
buff 是一个 boost::array<char, 1024>
Pet*_*org 20
您是如何期望使用任何其他方法执行此操作的?
在异步庄园中发送可变大小的数据有一些通用方法:
那么您的数据可以被解析,还是发送长度等...