首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QFtp未在wireshark中发送数据包

QFtp未在wireshark中发送数据包
EN

Stack Overflow用户
提问于 2018-03-08 16:10:27
回答 1查看 46关注 0票数 0

我正在学习如何使用QFtp。

我想连接到远程ftp服务器并列出它的内容。

这是我迄今所写的:

代码语言:javascript
复制
// libftp.cpp
#include "libftp.h"

libFTP::libFTP(QObject *parent) :
    QObject(parent)
{
}

void libFTP::open(QString host)
{
    connect(&ftp,SIGNAL(commandFinished(int,bool)),this,SLOT(status(int,bool)));
    connect(&ftp,SIGNAL(listInfo(QUrlInfo)),this,SLOT(dir(QUrlInfo)));
    ftp.setTransferMode(QFtp::Active);
    ftp.connectToHost(host);
    ftp.list();
    ftp.cd("USER");
}

void libFTP::disconnect()
{
    ftp.abort();
    ftp.deleteLater();
}

void libFTP::download(QString filename)
{
    ftp.get(filename);
}

void libFTP::upload(QString path,QString filename)
{
    QString fullpath=path+filename;
    try
    {
      QFile *f= new QFile(fullpath);
      if(f->exists())
      {
          qDebug()<<"File Trovato";
          ftp.mkdir("test");
          //ftp.put(f,filename);
          f->close();
          f->deleteLater();
      }
    }
    catch(std::exception x)
    {
        qDebug()<<"Errore " << x.what();
    }
}

void libFTP::status(int id,bool error)
{
    if(error)
    {
        qDebug()<<"Errore";
    }
    else
        qDebug()<<"Status ID " << QString(id);
}

void libFTP::dir(QUrlInfo directory)
{
    qDebug()<<directory.name();
}
代码语言:javascript
复制
// libftp.h
#ifndef LIBFTP_H
#define LIBFTP_H

#include <QObject>
#include <QtCore>
#include <QFtp>
#include <QUrlInfo>
class libFTP : public QObject
{
    Q_OBJECT
public:
    explicit libFTP(QObject *parent = 0);
    void open(QString host);
    void disconnect();
    void download(QString filename);
    void upload(QString path,QString filename);

   private:
       QFtp ftp;

signals:

public slots:
    void status(int id,bool error);
    void dir(QUrlInfo directory);
};

#endif // LIBFTP_H

我称它为main:

代码语言:javascript
复制
#include <libftp.h>
int main()
{
    libFTP *ftp = new libFTP();
    ftp->open("10.20.xx.xxx");
    ftp->deleteLater();
}

我连接到的服务器接受匿名登录。当我尝试调试这段代码时,我注意到没有任何插槽被调用,而且我在wireshark捕获中没有看到任何FTP数据包。在我看到的每个示例代码中,QFtp都是这样使用的,我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-12 13:06:03

发现了这个问题,这对一个qt新手来说不是即时的,它没有显示任何信息。我不得不在一个QFtp中运行QApplication。我认为这是事件循环所需要的。

在main()中调用QApplication解决了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49177591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档