Russian Qt Forum

Qt => Работа с сетью => Тема начата: Oskal от Март 13, 2013, 16:58



Название: Количество байт в переданном сообщении QWebView
Отправлено: Oskal от Март 13, 2013, 16:58
Необходимо получить количество байт в переданном сообщении от клиента и в принятом сообщении от сервера.
Вот что у меня пока получается:

Код:
connect(view->page()->networkAccessManager(), SIGNAL(finished(QNetworkReply *)), this, SLOT(RespFinished(QNetworkReply *)));

void WebBrowser::RespFinished(QNetworkReply *reply)
{

QList<QByteArray> result=reply->rawHeaderList(); //список полей заголовков, посланы сервером
QString strtemp;

//Вывод ответа http-заголовка в текстовое поле
foreach (QByteArray byteArray, result)
{
strtemp=QString(byteArray.constData())+": "+QString(reply->rawHeader(byteArray).constData());
textFrom->append(strtemp);
}

//Вывод запроса в текстовое поле
QUrl fgh=reply->request().url();
textTo->append (fgh.toEncoded());

//вывод количесвто загруженных байт
testtotal->setText(QString::number(view->page()->totalBytes()/*view->page()->bytesReceived()*/));

//сигнал не срабатывает?
//connect(reply, SIGNAL(downloadProgress(qint64, qint64)), view, SLOT(test(qint64, qint64)));
}

Посоветуйте, как это можно сделать.
Почему не срабатывает сигнал?


Название: Re: Количество байт в переданном сообщении QWebView
Отправлено: mutineer от Март 13, 2013, 19:17
А какой прогресс загрузки должен быть, если запрос уже завершен?


Название: Re: Количество байт в переданном сообщении QWebView
Отправлено: Oskal от Март 16, 2013, 20:45
Уже неделю мучаю. Как же сделать подсчет трафика переданных и отправленных байт?


Название: Re: Количество байт в переданном сообщении QWebView
Отправлено: carrygun от Март 18, 2013, 06:59
Коннект к сигналу описан в неправильном месте.


Название: Re: Количество байт в переданном сообщении QWebView
Отправлено: Oskal от Март 18, 2013, 09:09
Я уже это понял что не там, чтобы разобраться сделал без QWebView и запихал коннект в запрос. Но он показывает, сколько было загружено без учета заголовков в ответе. Наверно придется самостоятельно реализовывать протокол http и переопределить классы Qt для работы QWebView. В общем времени мало сделаю в С++ Builder.


Название: Re: Количество байт в переданном сообщении QWebView
Отправлено: Bepec от Март 18, 2013, 09:33
Омг. Без учёта заголовков в ответе? :D ужасно. А то, что NAM незнает, что ты качаешь, значение имеет? :D Или ты скажи, что он с добрыми словами определяет что это страница и не качаёт её заголовки? :P


Название: Re: Количество байт в переданном сообщении QWebView
Отправлено: antoshib от Апрель 04, 2013, 10:22
У меня наподобие проблема  >:( Число байт странное какое-то..
Код:
    QByteArray  block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setByteOrder(QDataStream::BigEndian);

    quint16 totalSize;
    quint16 typeOfRequest         = 1;
    quint16 zeroTerminatorSize    = 1;
    quint16 responceSize          = txtResponce.size() + zeroTerminatorSize;
    quint16 totalSizeFieldSize    = sizeof(totalSize);
    quint16 typeOfRequestFieldSize= sizeof(typeOfRequest);

    qDebug() << "sizes: " << totalSizeFieldSize << typeOfRequestFieldSize << responceSize;

    totalSize = totalSizeFieldSize     
              + typeOfRequestFieldSize
              + responceSize
              ;

    out << (quint16)totalSize;                  qDebug() << "Size block" << block.size();
    out << (quint16)typeOfRequest;              qDebug() << "Size block" << block.size();
    out << txtResponce.toStdString().c_str() ;  qDebug() << "Size block" << block.size();

на выходе вижу:
Цитировать
sizes: 2 2 5
Size block 2
Size block 4
Size block 13

Окуда берутся еще 4  ???