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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите реализовать докачку QNetworkAccessManager !!!!  (Прочитано 9508 раз)
besheniy.profesor
Гость
« : Апрель 22, 2010, 14:28 »

Помогите реализовать докачку файла с помощу QNetworkAccessManager
общую для всех протоколов Непонимающий Плачущий Непонимающий
Записан
crossly
Гость
« Ответ #1 : Апрель 22, 2010, 14:57 »

что значит общую для всех протоколов??
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Апрель 22, 2010, 14:59 »

Ну во первых начни с того что сам сделал и что не получается, а иначе это звучит как сделайте за меня Улыбающийся Во вторых что то мне говорил что общую для всех протоколов не получится реализовать, скорее всего придется для каждого писать, но я могу и ошибаться.
Записан
besheniy.profesor
Гость
« Ответ #3 : Апрель 27, 2010, 14:12 »

Код:
void DownloadManager::startDownload()
{
    if (downloadUrl.isEmpty())
    {        emit errordownload(1);
        return;
    }
    output.setFileName(filename);
    if (!output.open(QIODevice::WriteOnly))
    {
        emit errordownload(2);
        return;           
    }
    QNetworkRequest request(downloadUrl);
    currentDownload = manager.get(request);
    currentDownload->setReadBufferSize(100*1024);
    this->downloadTimer = new QTimer(this);
    this->downloadTimer->start(1000);
    connect(currentDownload, SIGNAL(finished()),SLOT(downloadFinished()));
    connect(downloadTimer, SIGNAL(timeout()),SLOT(downloadReadyRead()));
}
void DownloadManager::downloadReadyRead()
{   
    output.write(currentDownload->readAll());
   
}

Я должен реализовать докачку файлов по протоколам HTTP и FTP с помощью класса QNetworkAccessManager
Записан
crossly
Гость
« Ответ #4 : Апрель 27, 2010, 15:30 »

настоятельно рекомендую прочитать вот это http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html и вот это http://tools.ietf.org/html/rfc959 .... исходя из первого можно реализовать докачку для HTTP с помощью Range ... у FTP протокола есть своя команда REST... для http сделать указав Range в хидере.. для ftp так не получится....так что удачи....
« Последнее редактирование: Апрель 27, 2010, 15:32 от crossly » Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #5 : Апрель 27, 2010, 18:19 »

Да, и кодец странноват, в общем в случае с http тебе придется обмениваться заголовками с сервером ,crossly, скинул хорошие ссылки, от себя добавлю вот -> http://ru.wikipedia.org/wiki/HTTP , там все подробно про Http расписано, в случае с ftp тоже видимо обмениваться командами ,вот список команд -> http://ru.wikipedia.org/wiki/FTP

REST [С_КАКОГО_БАЙТА_ПРОДОЛЖИТЬ]
RETR [ИМЯ_ФАЙЛА]

Дерзай.
Записан
besheniy.profesor
Гость
« Ответ #6 : Май 10, 2010, 14:13 »

Код:
QNetworkRequest request(QUrl("http://127.0.0.1/Video/Films/Fytyrama-Igra-Bendera-www.Rouminga.Ru.avi"));
request.setRawHeader("Range","bytes=502400000");
Код сработал на ура ! Спасибо!!!!
А вот  этот не работает
Код:
QNetworkRequest request(QUrl("ftp://127.0.0.1/Video/Films/Fytyrama-Igra-Bendera-www.Rouminga.Ru.avi"));
request.setRawHeader("REST","502400000");
Может я што-то не то делаю??
Или лудше QFtp?

 
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #7 : Май 10, 2010, 16:57 »

Я конечно не уверен, но попробуй вот так
Код:
QNetworkRequest request(QUrl("ftp://127.0.0.1/Video/Films/"));
request.setRawHeader("REST","502400000");
request.setRawHeader("RETR","Fytyrama-Igra-Bendera-www.Rouminga.Ru.avi");
Записан
besheniy.profesor
Гость
« Ответ #8 : Май 11, 2010, 00:30 »

Не работает!! пробовал!
Записан
crossly
Гость
« Ответ #9 : Май 11, 2010, 13:33 »

ну я же сразу сказал.... что докачку фтп с помощью QNetworkAccessManager не получится реализовать... этот изначально заточен на работу с HTTP... для ftp используй QFtp...
Записан
thechicho
Гость
« Ответ #10 : Февраль 12, 2012, 12:54 »

если схема ftp:// , то qnam будет работать по этому протоколу. можно загрузить, скачать файл. докачка не прокатит с ним, т.к. надо команды отправлять. используй int QFtp::rawCommand ( const QString & command )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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