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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QFTP  (Прочитано 18971 раз)
BRE
Гость
« Ответ #15 : Июнь 10, 2009, 13:41 »

попробовал сделать как у PunX.. проблема та же.. логинится. создает файл новый.. и фсё... и тишина..
Приконнектся к сигналам commandStarted, commandFinished и посмотри какие команды выполняются, проверяй состояние (сигнал stateChaged) и ошибки. Тогда поймешь в каком месте и по какой причине прерывается операция.

P.S. И еще добавь проверку при открытии файла prays.cs, что-то мне подсказывает, что не открывается он...
« Последнее редактирование: Июнь 10, 2009, 14:01 от BRE » Записан
Krow
Гость
« Ответ #16 : Июнь 12, 2009, 06:41 »

спасиб, BRE. действительно файл просто не открывался. щас всё заработало!
Записан
n. tr.
Гость
« Ответ #17 : Июль 02, 2009, 11:30 »

Здравствуйте!
Есть очень простая задача - скачать с фтп файл.
Делаю всё простым образом:
Код
C++ (Qt)
QFile *file = new QFile("out.txt");
if (!file->open(QIODevice::WriteOnly))
return -1;
ftp = new QFtp(this);
ftp->connectToHost("ftp.trolltech.com");
ftp->login();                            
ftp->cd("qt");              
ftp->get("INSTALL", file);            
ftp->close();  
file->close();
 
return 0;


На выходе мой файл - пустой. Что я делаю не так?
Записан
n. tr.
Гость
« Ответ #18 : Июль 02, 2009, 11:53 »

Проблему вроде решил (не знаю, правильно ли).
Всё из-за того, что соединение происходит не мгновенно, поэтому файл закрывался раньше, чем заканчивала работу команда get.
Записан
n. tr.
Гость
« Ответ #19 : Июль 27, 2009, 13:06 »

ещё вопрос по сабжу.
у меня все сигналы commandFinished и commandStarted соеденены с соотв. слотом, самое интересное, что слот запускается только при командах set the transfer mode  switch proxying on or off is working
switch proxying, connectToHost() и login(), а мне очень нужно завершение команды list. Но не выходит.
Кто-нибудь сталкивался?
Записан
niXman
Гость
« Ответ #20 : Июль 27, 2009, 15:12 »

Ну вы что, документацию не читаете?

1. логинимся.
2. открываем отправляемый файл.
3. отправляем.
4. ждем испускания сигнала "void commandFinished ( int id, bool error )"
5. Закрываем файл.

это наскоро набросанный алгоритм. А правильный - нужно запоминать "id" каждой команды, посланной в QFtp. А знать его можно подключив к сигналу "QFtp::commandStarted ( int id )" слот.

В примерах($(QTDIR)/examples/network/ftp) приведен исчерпывающий пример.

Успехов.
Записан
n. tr.
Гость
« Ответ #21 : Июль 28, 2009, 14:29 »

документацию я прочитал. Проблема в том, что сигнал то ли не испускается, то ли не отлавливается. Кроме указанных, других сигналов нет, хотя команды, выполняются.
Мне нужна скачка файлов по шаблону, но выяснилось, что если какого-то из фалов нету, то не сумев его скачать функцией get() работа Qftp завершается. Варианта два: либо создавать новый объект QFtp для каждого файла, либо проверять наличие файлов в listInfo и редактировать шаблон.
далее я думал, что в слот, соединённый с сигналом сommandFinished я помещу вызов функции скачки, если id будет равен QFtp::List. В итоге - фига. Лист завершается, а слот не вызывается не фига!!!
Пришлось помещать скачку прямо в listInfo (и выглядит это кривовато, честно говоря).



Кстати, niXman похоже не по моей проблеме высказался, ну ладно, не суть, там тоже ошибка. Закрывать нужно после сигнала done, а не commandFinished, потому что возможна ситуация как у меня, когда сигнал испущен не будет - для того же get у меня сигнал почему-то не испускается (ни commandStarted ни commandFinished).

QT 4.4.3.
Записан
Vexator
Гость
« Ответ #22 : Август 21, 2009, 04:17 »

Код
C++ (Qt)
this->setGeometry( QRect(20, 20, 200, 50) );
setWindowTitle("FTP downloader v 1.1");
 
ftp = new QFtp(this);
connect(ftp, SIGNAL(commandFinished(int, bool)),this, SLOT(ftpCommandFinished(int, bool)));
connect(ftp, SIGNAL(listInfo(const QUrlInfo &)),this, SLOT(addToList(const QUrlInfo &)));  //тут выполняеться создание списка файлов для скачки
connect(ftp, SIGNAL(commandStarted(int )),this,SLOT(ftpMod(int )));
 
   
прекрасно работает...
просматриваем каталог, листим, формируем лист файлов для скачки (по заданному шаблону), качаем.. никогда проблем не было...

Qt 4.2.3
« Последнее редактирование: Август 21, 2009, 04:19 от Vexator » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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