假设您使用异步方法,给予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);
}
这是您可以在自己的代码中执行的操作。你不需要任何提升的帮助。 –
@J T:我尝试创建一个可扩展的服务器。我有一个服务的概念。我在每个用户请求上将套接字传递给每个服务。我想知道这个连接使用了多少流量。 – Rella