0

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

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

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

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

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

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

4

1 回答 1

0

仔细阅读这个链接

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

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

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

于 2019-04-28T06:56:53.173 回答