Quantcast
Channel: Installation and Deployment
Viewing all articles
Browse latest Browse all 22112

Simple ftp file transfer reconnect problem?

$
0
0
Hello, i write an small prg that transfer an file via ftp. i test the prg and get following error, if the username wrong first transfer get an user or password error 204, thats okay, if i retry the transfer with the same settings i get an timeout. why? #include "include/Protocol/Ftp.h" #include "include/ConfigFile/ConfigFile.h" #include "include/Defines/Global.h"   #include <QUrl> #include <QNetworkAccessManager> #include <QFile> #include <QApplication>   Ftp::Ftp(ConfigFile &config, QWidget *parent) :     QWidget(parent), cf(config), reply(NULL) {     manager  = new QNetworkAccessManager(0);     connecttimer.setInterval(FTP_CONNECT_TIMEOUT);     connect(&connecttimer, SIGNAL(timeout()), this, SLOT(CheckConnection()));   }   void Ftp::GetFile(void) {     if(!reply)     {         reply = manager->get(QNetworkRequest(QUrl("ftp://" +cf.GetftpUsername() +":" +cf.GetftpPassword() +"@" +cf.GetServerAddress().toString() +":" +QString::number(cf.GetftpPort()) +"/" +cf.GetProgramName() +OS_PRG_EXT)));         qDebug() << "#########" << "reply == NULL" << "#########";         connect(reply, SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(downloadinProgress(qint64,qint64)));         connect(reply, SIGNAL(finished()), this, SLOT(replyfinished()));         connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));         connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError)));     }       connecttimer.start();       #if DEBUG_LEVEL_FTP > LOG_ERRORS          qDebug() << this->metaObject()->className() << "FTP: GetFile ";     #endif }   void Ftp::CheckConnection(void) {     #if DEBUG_LEVEL_FTP > LOG_ERRORS          qDebug() << this->metaObject()->className() << "CheckConnection";     #endif       connecttimer.stop();     reply->disconnect();       if(reply)     {         if(reply->isFinished())         {             replyfinished();             emit DownloadFinished(reply->error());                   emit StatusUpdate("No error");         }         else         {             qDebug() << "reply->isFinished() " << reply->isFinished();             emit DownloadFinished(QNetworkReply::TimeoutError);             emit StatusUpdate("the connection to the remote server timed out");         }     }     reply->deleteLater();     reply = NULL; }     void Ftp::downloadinProgress(qint64 bytesReceived, qint64 bytesTotal) {     #if DEBUG_LEVEL_FTP > LOG_ERRORS          qDebug() << this->metaObject()->className() << "downloadinProgress " << "bytesReceived " << bytesReceived << "bytesTotal " << bytesTotal;     #endif       connecttimer.start(); }   void Ftp::slotReadyRead(void) {     #if DEBUG_LEVEL_FTP > LOG_ERRORS          qDebug() << this->metaObject()->className() << "slotReadyRead";     #endif       connecttimer.start(); }   void Ftp::replyfinished() {     connecttimer.stop();       #if DEBUG_LEVEL_FTP > LOG_ERRORS          qDebug() << this->metaObject()->className() <<"replyfinished ";     #endif     if(reply)     {         #if DEBUG_LEVEL_FTP > LOG_ERRORS             qDebug() << this->metaObject()->className() << "if reply ";         #endif         if(reply->bytesAvailable())         {             QFile file(QApplication::applicationDirPath() +"/" + cf.GetProgramName() + TEMP_FILENAME_EXT);             file.open(QIODevice::WriteOnly);               #if DEBUG_LEVEL_FTP > LOG_ERRORS                  qDebug() << this->metaObject()->className() << "file write: " << file.write(reply->readAll());             #endif               file.close();         }         emit DownloadFinished(reply->error());         qDebug() << reply->errorString()<< " reply->error() " << reply->error();         if(reply->error() == 0)             emit StatusUpdate("No error");         else             emit StatusUpdate(reply->errorString());     }     else     {         emit DownloadFinished(QNetworkReply::TimeoutError);         emit StatusUpdate("the connection to the remote server timed out");     }     reply->deleteLater();     reply = NULL; }   void Ftp::slotError(QNetworkReply::NetworkError error) {       #if DEBUG_LEVEL_FTP > LOG_NOTHING          qDebug() << this->metaObject()->className() <<"slotError: " << error;     #endif       if(error)     {         connecttimer.stop();         emit DownloadFinished(reply->error());         emit StatusUpdate(reply->errorString());         reply->deleteLater();         reply = NULL;     } }

Viewing all articles
Browse latest Browse all 22112

Trending Articles