如何在异步读取提升asio c ++上获得传输的字节数量

时间:2013-04-22 17:00:57

标签: c++ sockets asynchronous boost-asio

正如我在Boost :: asio中看到的那样,异步读取函数不会返回传输的字节数,但正常的读取函数会返回。当我使用async_read_some时,如何获取传输的字节数? (参数:缓冲区,处理程序)

2 个答案:

答案 0 :(得分:4)

All forms of async_read期待表单的“ReadHandler”回调

void handler(
  const boost::system::error_code& error, // Result of operation.

  std::size_t bytes_transferred           // Number of bytes copied into the
                                          // buffers. If an error occurred,
                                          // this will be the  number of
                                          // bytes successfully transferred
                                          // prior to the error.
); 

回调的第二个参数是读取的字节数。

答案 1 :(得分:2)

一旦读取完成,异步读取函数就会调用“处理程序”函数(或函数对象)。传输的字节数传递给该函数;函数的签名必须是:

void handler(
    const boost::system::error_code& error, // Result of operation.
    std::size_t bytes_transferred           // Number of bytes read.
);

读取处理程序的要求记录在here