Seite 1 von 1

FTP - Upload

Verfasst: 19. Januar 2010 17:20
von bob446
Hallo,

ich bin gerade dabei ein Programm zu schreiben, welches Dateien per FTP auf einen Server hochlädt. Allerdings arbeitet QFTP asynchron. Ich will nun aber feststellen, wann mein Upload fertig ist und die Funktion verlassen, um anhand eines Status mein weiteres vorgehen im Programm zu steuern.
Ich stelle mir so etwas vor wie:

Code: Alles auswählen

MyFTPClass *myclass;
int i = myclass->uploadFiles(fileNames);
//Reaktion auf das Ergebnis 
meine uploadFiles()-Methode soll mehr oder weniger so funktionieren, nur das sie mehrere Files hochlädt:

Code: Alles auswählen

 ftp->connectToHost("ftp.trolltech.com");  // id == 1
 ftp->login();                              // id == 2
 ftp->cd("qt");                            // id == 3
 ftp->put(...);                             // id == 4
 ftp->close();                             // id == 5 
Kann mir jemand helfen, wie ich das ganze aufbauen könnte? Sollte ich dafür Threads verwenden oder reichen auch Signal/Slot-Verbindungen?
Vielen Dank schonmal im Voraus !

Verfasst: 19. Januar 2010 17:37
von RHBaum
Threads nimmt man, um nebenlaeufigkeit zu erzeugen, QFtp iss nun aber schon nebenlaeufig(assynchron) . D.h. du kannst threads noch fuer andere dinge verwenden, aber fuer QFtp selber brauchst es nicht mehr.
Ich will nun aber feststellen, wann mein Upload fertig ist und die Funktion verlassen, um anhand eines Status mein weiteres vorgehen im Programm zu steuern.
man kann synchronitaet quasi wiederherstellen, ind dem man den hauptthread blockiert :-) bis ueber den anderen thread die nachricht der fertigstellung kommt. Bis dahin laesst man den hauptthread auf ein waitobject laufen (spinlock oder was signal oder irgendwas) ...

QWaitCondition iss da das passende object fuer.

Ob es sinvoll iss, keine ahnung.
Ich wuerd aber den hauoptthread weiter leben lassen, und nur ueber einen automatismuss gesteuert alle funktionalitaet abschalten, die waehrend eines ftp downloads ned sinnvoll ist. Und wenn es waehrend des ganzen ftp vorgangs nix sinvolles zu tun gibt, kommt er halt quasi nie aus der eventschleife raus, iss ja ned schlimm ^^
Aber abbruch und nen progressbar koennt man scho befeuern ....

Ciao ...

Verfasst: 19. Januar 2010 17:39
von upsala
Man wartet in keiner Funktion auf irgendetwas. Man braucht nichtmal QFtp ableiten. Gib deine Commandos an QFtp weiter und warte auf das done()-Signal.