有没有办法获得与协同程序在Boost asio中传输的字节数

问题描述 投票:0回答:1

我正在使用与协同程序的boost asio从tcp socket获取一些数据。在这些文档中显示的exmaples中,示例如下所示

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

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

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

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

但目前还不是很清楚如何用coroutine做同样的事情。

boost boost-asio boost-coroutine
1个回答
0
投票

仔细阅读这个link

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.