Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT] как организовать докачку файлов? / 25 сообщений из 48, страница 1 из 2
17.12.2014, 09:14
    #38835685
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
организовал скачку файлов.
вот код который производит запись в файл.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 QFile *file = new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite))
        {
            file->write(reply->readAll());
            file->flush();
            file->close();
        }
        delete file;
...
Рейтинг: 0 / 0
17.12.2014, 10:35
    #38835751
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Хорошо как сделать чтоб вот тут
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
QFile *file = new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite))
        {
            file->write(reply->readAll());
            file->flush();
            file->close();
        }
        delete file;



программа получала данные по байтам а не все сразу?
сделал так но это неправильно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 qint64 fs=file->size();
            qint64 rs=reply->size();
            qint64 i=fs;
            while (i<=rs){
                char data[1];

                reply->read(data,1);    
                file->write(data);
                file->flush();
                i=i+1;
            }
            file->close();
...
Рейтинг: 0 / 0
17.12.2014, 12:43
    #38835916
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Картежник, можно читать блоками через ::read(char * data, qint64 maxSize)
а обработку делать по байтам.

Или тебе другое надо?
...
Рейтинг: 0 / 0
17.12.2014, 19:05
    #38836348
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
mayton,
мне именно это и надо.а в этом коде видимо что то не так сделал? если прочитал правильно,значит записал неправильно
...
Рейтинг: 0 / 0
17.12.2014, 19:12
    #38836355
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Картежникв этом коде видимо что то не так сделал?
Да в общем-то практически всё не так. Позиционирования на конец файла - нет. Запроса
только недостающей части - нет. Конечный размер определяется неправильно. А за запись по
одному байту вообще надо руки отрывать до самой задницы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
17.12.2014, 19:19
    #38836361
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
А зачем QFile через new создаётся, а чуть ниже удаляется? Это ж потенциально может привести к утечке памяти, если между созданием и удалением возникнет исключение. Пользуйтесь хотя бы умными указателями.
...
Рейтинг: 0 / 0
17.12.2014, 19:28
    #38836368
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Dimitry Sibiryakov,

по 1 байту - это для проверки. на конец файла будет следующий этап. я же сверху писал что хочу организовать запись побайтно.а там был пример который считывает полностью и записывает полностью.после того как удастся сделать это буду уже к следующему этапу, там будет проверка целостности файла и т.д.
...
Рейтинг: 0 / 0
17.12.2014, 19:33
    #38836375
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
NekZА зачем QFile через new создаётся, а чуть ниже удаляется? Это ж потенциально может привести к утечке памяти, если между созданием и удалением возникнет исключение. Пользуйтесь хотя бы умными указателями.
вопрос был о том сделать считывание и запись по байтам, а не про утечку памяти)))
...
Рейтинг: 0 / 0
17.12.2014, 19:57
    #38836395
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Картежник, вычитывание файла по байтам это "фасад". Реально файло читается блоками.
...
Рейтинг: 0 / 0
17.12.2014, 20:11
    #38836409
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
mayton,

ок спс понятно. ну поменять цифру 1 будет не сложно думаю. вообщем поменял на 8. пытаюсь считать простой текстовой файл. и все равно не то. структура файла вроде правильная.а вот символы не те
...
Рейтинг: 0 / 0
17.12.2014, 20:30
    #38836419
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Я не спец в Qt. Но вроде текстовые данные читаются через QTextStream. И обрати внимание на setCodec(..)

http://qt-project.org/doc/qt-4.8/qtextstream.html
...
Рейтинг: 0 / 0
17.12.2014, 20:34
    #38836421
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
maytonЯ не спец в Qt. Но вроде текстовые данные читаются через QTextStream. И обрати внимание на setCodec(..)

http://qt-project.org/doc/qt-4.8/qtextstream.html
я текстовой файл взял тоже для начала.на самом деле мне нужно будет скачивать бинарные файлы.они тоже не правильно записываются. почему то размер получается больше чем исходный
...
Рейтинг: 0 / 0
17.12.2014, 20:35
    #38836422
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Тогда почему ты решил что символы "не те" ? Как догадался?
...
Рейтинг: 0 / 0
17.12.2014, 20:38
    #38836424
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
mayton,
исходный
Код: sql
1.
2.
3.
4.
5.
User-agent: *
Disallow: /cabinet/
Disallow: /test/
Sitemap: http://kz-test.besaba.com/sitemap.xml
Host: kz-test.besaba.com/



результат
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
User-ageyT§хёЦnt: *
DyT§хёЦisallow:yT§хёЦ /cabineyT§хёЦt/
DisayT§хёЦllow: /tyT§хёЦest/
SiyT§хёЦtemap: hyT§хёЦttp://kzyT§хёЦ-test.beyT§хёЦsaba.comyT§хёЦ/sitemapyT§хёЦ.xml
HoyT§хёЦst: kz-tyT§хёЦest.besayT§хёЦba.com/
yT§хёЦ
a.com/
yT§хёЦ
...
Рейтинг: 0 / 0
17.12.2014, 20:52
    #38836437
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Картежник,

все разобрался вместо write(data) надо write(data,len)
...
Рейтинг: 0 / 0
17.12.2014, 22:40
    #38836487
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
все получилось
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 QFile *file=new QFile("C:/qt/"+str);
        if(file->open(QFile::ReadWrite)){
            qint64 fs=file->size();
            qint64 rs=reply->size();
            qint64 i=fs;
            int n=8;
            while (i<=rs){
                char data[8];
                if(rs-i<8)n=rs-i;
                reply->read(data,n);
                file->write(data,n);
                file->flush();
                i=i+8;
            }
            file->close();
        }
        delete file;


еще вопрос какой оптимальный размер лучше поставить для считывания
...
Рейтинг: 0 / 0
17.12.2014, 23:50
    #38836514
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Картежниквсе получилось
Угу. Только одна мелочь: ты каждый раз перекачиваешь весь файл заново вместо того чтобы
докачать только недостающее. Ну да скорость немеряна, траффик не считанный, а программист...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.12.2014, 07:55
    #38836601
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Dimitry Sibiryakov,

еще раз повторяю здесь я сделал всего лишь запись побайтно.остальное я буду делать сам
...
Рейтинг: 0 / 0
18.12.2014, 09:46
    #38836661
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Dimitry SibiryakovКартежниквсе получилось
Угу. Только одна мелочь: ты каждый раз перекачиваешь весь файл заново вместо того чтобы
докачать только недостающее. Ну да скорость немеряна, траффик не считанный, а программист...

а в каком месте написано что я каждый раз перекачиваю весь файл?
...
Рейтинг: 0 / 0
18.12.2014, 12:44
    #38836886
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Картежника в каком месте написано что я каждый раз перекачиваю весь файл?

Вот ты видишь указание HTTP серверу с какого байта начинать выдачу?.. И его нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.12.2014, 12:49
    #38836891
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Dimitry SibiryakovКартежника в каком месте написано что я каждый раз перекачиваю весь файл?

Вот ты видишь указание HTTP серверу с какого байта начинать выдачу?.. И его нет.

а это не то?
Код: plaintext
1.
2.
3.
4.
5.
qint64 fs=file->size();
            qint64 rs=reply->size();
            qint64 i=fs;
            int n=8;
            while (i<=rs){
...
Рейтинг: 0 / 0
18.12.2014, 12:51
    #38836897
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
получается в данном случае он все равно получает весь файл,а только потом обрабатывает откуда читать и т.д.?
...
Рейтинг: 0 / 0
18.12.2014, 12:52
    #38836898
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
а понял. там нужно использовать seek() ? или в данном случае все равно получится что весь файл скачаю, и с него уже будет считываться информация с нужного места?
...
Рейтинг: 0 / 0
18.12.2014, 13:03
    #38836919
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Картежника это не то?
А это вообще полная чушь, дающая весьма забавные спецэффекты о которых я не хочу
спойлерить. "Сурпрайз будет..." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.12.2014, 13:07
    #38836925
Картежник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[QT] как организовать докачку файлов?
Dimitry SibiryakovКартежника в каком месте написано что я каждый раз перекачиваю весь файл?

Вот ты видишь указание HTTP серверу с какого байта начинать выдачу?.. И его нет.


на http сервере есть команда которая указыывает ему с какого байта выдавать инфу?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT] как организовать докачку файлов? / 25 сообщений из 48, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]