• 7870阅读
  • 8回复

请教关于qt ftp的异常处理 [复制链接]

上一主题 下一主题
离线netcat
 

只看楼主 倒序阅读 楼主  发表于: 2010-12-30
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
需要实现一个很简单的任务,就是登陆到服务器上,然后往指定目录里面传文件。
代码实现是不管服务器上是否已经存在目标文件夹,一律使用mkdir来创建一遍,
本来以为在文件夹已存在的情况下最多是返回创建文件夹失败,之后的cd命令应该能够正确执行
但实际情况是当服务器上存在指定文件夹时,执行到mkdir后就不能继续往下走了。
其他ftp命令也会存在这样的问题吧?
在google上和论坛里搜了下,没找到相关文章,大概是我选的关键字没选好。
我想请教一下像这种异步命令的异常应该怎么处理?先行谢过


int main(int argc, char *argv[])
{
    QFtp *ftp;
    mFtp b;

    ftp = new QFtp();
    ftp->connectToHost("127.0.0.1", 21);
    ftp->login("user","passwd");
    QObject::connect(ftp, SIGNAL(commandFinished(int, bool)),&b, SLOT(cmd(int, bool)));

    ftp->mkdir("tmp"); // 服务器之前存在tmp文件夹的话接下来的cd命令无法成功执行
    ftp->cd("tmp");

    QCoreApplication a(argc, argv);

    return a.exec();
}


slot函数:
class mFtp: public QObject
{
Q_OBJECT
public slots:
    void cmd(int id, bool result)
    {
        printf("\nGot cmd result from %d:%d", id, result);
    }
};


离线water_wf

只看该作者 1楼 发表于: 2010-12-30
我以前的方法,记录每一不的动作,每个动作都会返回id,失败后,处理
离线luoyang

只看该作者 2楼 发表于: 2011-01-19
小弟新手,就不解为什么不管存在不存在都要创建目录呢?能不能写个判断语句判断下是否存在文件夹~~存在就next不存在就创建~~~
离线sy1413

只看该作者 3楼 发表于: 2011-08-29
我也遇到了这个问题
hello world!
离线collipes
只看该作者 4楼 发表于: 2011-10-31
请问该问题如何解决?
离线mevip

只看该作者 5楼 发表于: 2011-11-01
我也遇到了类似的问题:执行某个ftp命令后无法返回,即没有收到ftp的CommandFinished信号。
一旦出现该情况,后续的ftp命令都将无法执行,因为这些命令都处于pending状态。
我的解决办法是,改为同步方式执行ftp命令,并设置超时时间,超时没有返回时,delete该QFtp,然后new个新的继续。
离线sy1413

只看该作者 6楼 发表于: 2011-11-01
记录每步返回的id 号 进行判断
hello world!
离线mevip

只看该作者 7楼 发表于: 2011-11-02
回 6楼(sy1413) 的帖子
收不到CommandFinished信号,怎么判断?
离线swift19221
只看该作者 8楼 发表于: 2011-11-18
我都是用QNetworkManager 。
帮助文档中不是说QFTP和QHttp已经不建议使用了吗?
为什么还有那么多人在用呢??
快速回复
限100 字节
 
上一个 下一个