Как написать свой менеджер загрузок, используя c ++? - PullRequest
6 голосов
/ 19 октября 2010

Я хочу написать свой собственный менеджер загрузок, используя c ++ (qt4), но я понятия не имею об этом, поэтому

Пожалуйста, предложите мне, с чего мне начать, если вы знаете какой-либо хороший учебник или ссылку, пожалуйста

опубликовать его.

Я также хочу реализовать функции паузы / возобновления и множественной загрузки.

я уже знаю, что есть длинный список менеджера загрузок (fdm, idm, wget, flashgot, orbit и т. Д.), Но все же я хочу создать свой собственный, чтобы понять работу, стоящую за ними.

-Спасибо заранее.

Ответы [ 5 ]

6 голосов
/ 19 октября 2010

Если вы пытаетесь получить производственный класс, я бы порекомендовал URDL или Boost.Asio в целом.

Но если вы тратите время на развлечения, рассмотрите Byte Ranges и многопоточность для асинхронной обработки.Тем не менее, asio будет лучшим выбором для этого.

4 голосов
/ 20 октября 2010

Классы Qt. Классы QNetworkAccessManager, QNetworkRequest и QNetworkReply помогут вам в написании менеджера загрузок.

QNetworkAcessManager :: get () используется для загрузки

- Приветствия

2 голосов
/ 20 декабря 2017

Qt - довольно стабильный проект и имеет замечательную документацию, а не Boost , поэтому я сделал небольшой заголовок для Qt Projects, который обрабатывает загрузки как профессионал, вы должны попробовать его.

QEasyDownloader

Функции

  • Поддержка встроенной очереди загрузки
  • Автоматически возобновляет загрузку, может быть отключена, еслипользователь хочет!
  • Автоматически обрабатывает Сетевые прерывания .
  • Пауза и Возобновление Скачивание как талисман.
  • Управление ресурсами, Также используйте свой собственный QNetworkAccessManager .

Использование

#include <QCoreApplication>
#include "QEasyDownloader/QEasyDownloader.hpp"

int main(int argc, char **argv)
{
 QCoreApplication app(argc, argv);
 QEasyDownloader Downloader;
 /*
  * By Default Debug is false , make it true to print the download progress and
  * other stuff!
 */
 Downloader.Debug(true);

 QObject::connect(&Downloader, &QEasyDownloader::DownloadFinished,
 [&](QUrl Url, QString file) {
     qDebug() << "Downloaded :: " << file << " :: FROM :: " << Url;
     app.quit();
 });
 /*
  * Just Download!
 */
 Downloader.Download("http://www.divineimagination.com/gallery/movie/roving_web.wmv");
 return app.exec();
}

`` `

2 голосов
/ 02 марта 2011
0 голосов
/ 20 октября 2010

Может быть DataCod svn )?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...