有没有办法使用协程获取在 Boost asio 中传输的字节数



我正在使用带有协程的boost asio从tcp套接字获取一些数据。在这些文档中显示的示例中,该示例如下所示

http::async_read(socket, buffer, request, yield[ec]);

但是在这种情况下,我如何获得传输的字节数。

在不使用协程的情况下,我们可以绑定一个回调函数。

void onReadDataComplete(boost::system::error_code ec, std::size_t bytes_transferred)

但是目前还不清楚如何使用协程做同样的事情。

仔细阅读此链接。

可以使用 handleryield 调用启动函数async_read。处理程序签名必须是

void handler(boost::system::error_code ec, result_type result);

其中result表示读取了多少字节。当你用yield代替handler调用async_read时,async_read返回result_typesize_t - 表示读取字节计数器。所以你只需要检查async_read的返回值。

最新更新