我正在使用带有协程的boost asio从tcp套接字获取一些数据。在这些文档中显示的示例中,该示例如下所示
http::async_read(socket, buffer, request, yield[ec]);
但是在这种情况下,我如何获得传输的字节数。
在不使用协程的情况下,我们可以绑定一个回调函数。
void onReadDataComplete(boost::system::error_code ec, std::size_t bytes_transferred)
但是目前还不清楚如何使用协程做同样的事情。
仔细阅读此链接。
可以使用 handler
或 yield
调用启动函数async_read
。处理程序签名必须是
void handler(boost::system::error_code ec, result_type result);
其中result
表示读取了多少字节。当你用yield
代替handler
调用async_read
时,async_read
返回result_type
即 size_t
- 表示读取字节计数器。所以你只需要检查async_read
的返回值。