Russian Qt Forum
Ноябрь 23, 2024, 11:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QNetworkAccessManager. Ограничение скорости скачивания.  (Прочитано 3521 раз)
Patrin Andrey
Гость
« : Август 06, 2013, 10:19 »

Код:
void ClassName::start()
{
    QNetworkAccessManager *manager = new QNetworkAccessManager();
    QNetworkRequest request;
    request.setUrl(url);
    QNetworkReply *reply = manager->get(request);
    connect(reply, SIGNAL(readyRead()), this, SLOT(readyRead()));
}

void ClassName::readyRead()
{
    QNetworkReply* reply = qobject_cast<QNetworkReply*>(QObject::sender());
    allData.append(reply->readAll());     
}

В реальности это видео. С allData работает другой поток, который забирает данные с определённой скоростью, которая меньше скорости скачивания. Есть ли возможность приостановить скачивание на время?
Записан
mutineer
Гость
« Ответ #1 : Август 06, 2013, 10:28 »

Читай не все сразу, а блоками
Записан
Patrin Andrey
Гость
« Ответ #2 : Август 07, 2013, 07:54 »

Вообще это видео - это запись эфира за некоторое число дней. Первоначальное позиционирование осуществляется при запросе урла на видео. При попытке получить видео downloadProgress говорит что bytesTotal = -1. Позиционирование через request.setRawHeader("Range", "bytes=x-y") не поддерживается. Можно как-то иначе?
P.S. хочется решения стандартными методами Qt.
Записан
mutineer
Гость
« Ответ #3 : Август 07, 2013, 09:54 »

Так а что ты сделать хочешь? Вроде ты хотел ограничения скорости, а теперь про позиционирование говоришь
Записан
Patrin Andrey
Гость
« Ответ #4 : Август 07, 2013, 10:43 »

Ну а как я могу читать не всё сразу а блоками без позиционирования.
Если делать не reply->readAll() а read(xxx) то данные всё равно принимаются в какие-то внутренние буферы и жрут память.
reply->setReadBufferSize почему-то не помогает и данные продолжают приниматься.
Записан
Patrin Andrey
Гость
« Ответ #5 : Август 07, 2013, 14:36 »

Если руками сформировать запрос и отправить через QTcpSocket, при этом указав для него setReadBufferSize(х), то получается добиться того чего хочу.

Вопрос к знатокам http: "мне в ответе будут лететь какие-нибудь http заголовки?". Особенно могут ли они прилетать в перемешку с запрошенными данными?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 21.