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

Is there way to get the number of bytes transfered in Boost asio with coroutines

我正在使用带协程的 boost asio 从 tcp 套接字获取一些数据。 在那些文档中显示的示例中,示例看起来像

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

但是在这种情况下我怎样才能得到传输的字节数。

不使用协程我们可以绑定一个回调函数。

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

但是我不太清楚如何用协程做同样的事情。

仔细阅读这篇link

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

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

其中 result 表示读取了多少字节。当您用 yield 代替 handler 调用 async_read 时,async_read returns result_typesize_t - 这意味着计数器读取字节。所以你只需要检查 async_read.

中的 return 值