FTP - Upload

Alles rund um die Programmierung mit Qt
Antworten
bob446
Beiträge: 35
Registriert: 15. August 2009 11:28

FTP - Upload

Beitrag 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 !
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ...
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
Antworten