У меня есть клиент-серверное приложение C ++ TCP.Цикл сервера выглядит следующим образом:
void Server::start() {
using boost::asio::ip::tcp;
boost::asio::io_service IOservice;
tcp::endpoint serverEndpoint(tcp::v4(), 12345);
tcp::acceptor acceptor(IOservice, serverEndpoint);
std::cout << "Server started on port 12345 and accepting connections...\n";
for (;;) {
tcp::iostream clientStream;
boost::system::error_code err;
acceptor.accept(*clientStream.rdbuf(), err);
if (!err) {
std::cout << "client connected!" << std::endl;
std::thread t(&Server::handleNewClient, this, std::move(clientStream));
t.detach();
} else {
std::cerr << "Error " << err << std::endl;
}
}
}
void Server::handleNewClient(boost::asio::ip::tcp::iostream &&clientStream) {
// read from/write to clientStream
}
Я могу читать и писать в clientStream (например, используя операторы >> и <<) без проблем, но я хочу отслеживать количество байтовбыл отправлен через мой Iostream?Как правильно подходить к измерению данных, записанных / прочитанных в этой ситуации?Я не могу найти метод, возвращающий что-то в этом направлении или что-нибудь, что помогло бы мне рассчитать размер.Я был бы действительно заинтересован в измерении всего размера передаваемых данных (включая TCP + лежащие в основе заголовки протокола + данные) или просто байтов данных TCP. </p>
Редактировать: Чтобы уточнить, я могучтобы увидеть данные трафика с помощью таких инструментов, как wireshark, netstat, tcptop.Я прошу правильный способ измерить это внутри C ++.