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

时间:2019-04-28 06:25:53

标签: boost boost-asio boost-coroutine

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

请仔细阅读此link

可以使用async_readhandler来调用您的启动函数yield。处理程序签名必须为

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

其中result表示读取了多少字节。当您用async_read代替yield来调用handler时,async_read返回result_type,即size_t-表示读取字节的计数器。因此,您只需要检查async_read的返回值即可。