Подсчет трафика проходящего через QNetworkAccessManager



  • Есть QNetworkAccessManager и, например, несколько get/post запросов, проходящих через него. Нужно получить объем принятых/отправленных данных в байтах, прошедших через QNetworkAccessManager.
    Есть вариант попробовать сделать подсчет с помощью QNAM proxy, но решение получается довольно комплексное. Надеюсь, что можно сделать проще.
    Кто-нибудь сталкивался с подобной задачей? Как лучше реализовать подсчет данных (вариант с вмешательством в исходники Qt тоже не подходит)?



  • Думаю что самое элементарное решение будет такое:

    При посте QNetworkAccessManager возврошает QNetworkReplay. Который в свою очередь емитет сигнал finished() его надо считать один раз, после первой считки он очишает данные .... Вот тут и решение... При считывание данных сматреть их размер и добовлять в переменную которая будет отвечать за общее каличество переданныхх данных.



  • Но это же будет только объём самих данных, без учета служебных заголовков (http headers, например)...



  • Ну они то состовляют скорее всего 0.01 % от передоваемых данных.....



  • Служебные заголовки скорее всего тоже имют фиксированный размер. Может возможно создать какую нибудь переменную со значанием размера этих заголовок и просто добавлять?



  • maxvanceffer,
    но это же не повод их не считать. Нужно точно знать сколько байт прошло через QNetworkAccessManager, а пренебрегать какими-то процентами при точном учёте не дело.

    qxoz,
    заголовки не имеют фиксированного размера, так как например в POST запросе количество полей может каким угодно.



  • Тогда у того же QNetworkReplay есть метод header() соберай отуда все заголовки и считай их...

    сматри QNetworkRequest::rawHeader()


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.