ich arbeite in einem eigenen Thread eine SQLite Tabelle ab und will einen bestimmten Inhalt als Text-File via FTP auf einen Server stellen. Das Problem an der Sache ist, dass es so aussieht, als wenn QFtp in einem eigenen Thread nicht funktioniert, d.h. keine Daten übermittelt. Ein vereinfachtes Beispiel:
Code: Alles auswählen
#include <QCoreApplication>
#include <QByteArray>
#include <QDebug>
#include <QFtp>
#include <QThread>
class FtpThread: public QThread {
public:
FtpThread(const QString name);
virtual void run();
private:
QString m_name;
};
FtpThread::FtpThread(const QString name): m_name(name)
{
}
void FtpThread::run()
{
QFtp *m_ftp;
QByteArray *m_ba;
m_ftp = new QFtp();
m_ba = new QByteArray();
int i;
m_ftp->connectToHost("mydomain");
m_ftp->login("user", "pwd");
for (i = 1; i <= 100; i++) {
m_ba->clear();
m_ba->append(i);
m_ftp->put(m_ba->data(), "test" + QString::number(i), QFtp::Ascii);
}
m_ftp->close();
}
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
FtpThread ft1("ft1");
ft1.start();
return app.exec();
}
Code: Alles auswählen
#include <QCoreApplication>
#include <QByteArray>
#include <QDebug>
#include <QFtp>
#include <QThread>
class FtpThread: public QThread {
public:
FtpThread(const QString name);
virtual void run();
private:
QString m_name;
};
FtpThread::FtpThread(const QString name): m_name(name)
{
}
void FtpThread::run()
{
}
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
/*
FtpThread ft1("ft1");
ft1.start();
*/
QFtp *m_ftp;
QByteArray *m_ba;
m_ftp = new QFtp();
m_ba = new QByteArray();
int i;
m_ftp->connectToHost("mydomain");
m_ftp->login("user", "pwd");
for (i = 1; i <= 100; i++) {
m_ba->clear();
m_ba->append(i);
m_ftp->put(m_ba->data(), "test" + QString::number(i), QFtp::Ascii);
}
m_ftp->close();
return app.exec();
}
Verwende QT 4.3.
Danke,
Thomas