Ymilij 27.04.2010 18:01
Qt Software — Скачиваем файл с Qt4
Что он за чувства чувствовал внутри,Пока Мума пускала пузыри?
Он привязал к Муме два кирпича —
Глаза садиста, руки палача.
© «Несчастный случай» о Qt Software и QHttp
Писал курсовую с использованием замечательной кросс-платформенной библиотеки — Qt. Помимо того, что она кросс-платформена, что само по себе для меня очень удобно — нет необходимости запускать win даже под виртуалкой для разработки курсовой, а собрать win32-версию необходимо, условие выполнения курсовой — приложение, исполняемое в среде win32. Так вот, помимо того, что Qt полностью кросс-платформена, она предлагает все средства для наиболее комфортной разработки приложений. Рекомендую.
Теперь к теме поста. Захотелось мне в своей программе реализовать функционал, работающий с протоколом http, а точнее, выкачивающий некоторую информацию. Для этого сразу полез в QHttp, после продолжительной бесплодной возни с ним обнаружил, что в 4.6 он уже depreciated и скоро будет вообще удалён из Qt, а для работы с сетью теперь надлежит использовать кошерный QNetworkAccessManager (кстати, работает, как с http, так и с ftp).
Ну чтож, забил я на QHttp и полез в доки по QNetworkAccessManager, а когда вернулся, написал класс, полностью удовлетворяющий моим потребностям.
Кстати, можно добавить ещё один слот, делающий reply->abort и закрывающий файл. Удобно прерывать уже начавшуюся загрузку.
divius 27.04.2010 20:05 #
+ 1 -
Одно плохо с QtNetwork: отсутствие синхронного API. Ох, намучался я вс свою время из-за этого...
Многопоточность же.
На худой конец псевдомноготопочность в виде qApp->processEvents; ;)
Или я не правильно понял, что такое "асинхронный API"?
На худой конец псевдомноготопочность в виде qApp->processEvents; ;)
Или я не правильно понял, что такое "асинхронный API"?
Согласен на 100%. Особенно, когда вся работа с сетью и обработка полученных данных идет в отдельном потоке. Ну, и на кой там, спрашивается, асинхронность, если все равно все конвейером устроено? Но, правда, за сигналы/слоты, логичность Qt в целом и хорошую документацию им это прощается. :)
Кстати, реквестирую статью про использование FTP через QNetworkAccessManager. Очень-очень надо!
А что надо юзать для заливки файла? put? а для создание директории? а для удаления файла/директории/директории с файлами?
Кстати, логин, должен тоже работать, можно попробывать ftp://login:pass@server/file.
Хм, с этим так сходу и не подскажу. Надо доки читать.
Хм, с этим так сходу и не подскажу. Надо доки читать.
Хм, а я и не знал что QHttp уже deprecated. Кстати, качалка есть в примерах к Qt ;)
Есть, но она там, мягко скажем, с излишним функционалом. Да и лучший способ понять велосипеды - сделать свой ;)
Олсо в свое время изрядно высрал кирпичей, увидев в примерах торент о_О