假设您使用异步方法,给定的完成处理程序async_read
将指示接收到的字节数。同样,给定的完成处理程序async_write
将指示写入的字节数。将运行中的计数器维护为类的成员将是微不足道的,在该类中您将方法绑定为前面描述的完成处理程序。
#include <boost/asio.hpp>
#include <iostream>
class Socket
{
public:
Socket(
boost::asio::io_service& io_service
) :
_socket( io_service ),
_counter( 0 )
{
}
void readHandler(
const boost::system::error_code& error,
std::size_t bytes_transferred
)
{
_counter += bytes_transferred;
}
void writeHHandler(
const boost::system::error_code& error,
std::size_t bytes_transferred
)
{
_counter += bytes_transferred;
}
private:
boost::asio::ip::tcp::socket _socket;
std::size_t _counter;
};
int
main()
{
boost::asio::io_service io_service;
Socket foo( io_service );
}