我正在使用带有协程的boost asio从tcp套接字获取一些数据。 在那些文档中显示的示例中,示例看起来像
http::async_read(socket, buffer, request, yield[ec]);
但是在这种情况下如何获取传输的字节数。
不使用协程,我们可以绑定回调函数。
void onReadDataComplete(boost::system::error_code ec, std::size_t bytes_transferred)
但是不清楚如何用协程做同样的事情。
答案 0 :(得分:0)
请仔细阅读此link。
可以使用async_read
或handler
来调用您的启动函数yield
。处理程序签名必须为
void handler(boost::system::error_code ec, result_type result);
其中result
表示读取了多少字节。当您用async_read
代替yield
来调用handler
时,async_read
返回result_type
,即size_t
-表示读取字节的计数器。因此,您只需要检查async_read
的返回值即可。