假設您使用異步方法,給予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