初めて QFtp を使用したいと思い、Google でよく検索して、どのように使用すればよいかを調べました。これは、特に典型的な例です。
#include <QCoreApplication>
#include <QFtp>
#include <QFile>
int main(int argc, char ** argv)
{
QCoreApplication app(argc, argv);
QFile *file = new QFile( "C:\\Devel\\THP\\tmp\\test.txt" );
file->open(QIODevice::ReadWrite);
QFtp *ftp = new QFtp();
ftp->setTransferMode(QFtp::Active);
ftp->connectToHost("ftp.trolltech.com");
ftp->login();
ftp->cd("qt");
ftp->get("INSTALL",file);
ftp->close();
QObject::connect(ftp, SIGNAL(done(bool)), &app, SLOT(quit()));
int ret = app.exec();
delete ftp;
delete file;
return ret;
}
質問:
私が理解している限り、ftp-get のファイナライズ時に発行される「完了」シグナルを処理するには、QCoreApplication アプリが必要です。これで、ftp->get接続前、さらにはアプリ ハンドラーが実行される前に呼び出されます (後で app.exec() が呼び出されます)。
"connect" ステートメントの前にファイル転送が既に完了している場合はどうなりますか? ftp->close()実際にはそうはなりませんが、connect(...) との間にたとえば 1 分間の人為的な遅延を入れることができます。この間、ftp get は確実に終了します。何が起こるでしょうか?