首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QFtp,中止list()命令

使用QFtp,中止list()命令
EN

Stack Overflow用户
提问于 2014-05-12 09:36:22
回答 1查看 365关注 0票数 1

我实际上想从ftp服务器上获得最新的文件。为此,我目前正在使用QFtp访问服务器并检索我所需的内容。

这就是我所做的(就像每3分钟一次):

  • 与服务器的连接和身份验证。
  • list()命令列出所有文件。
  • 对于list()命令列出的每个文件,我调用一个槽来验证当前列出的文件是否已经下载(我依赖文件的日期)。如果该文件是最近的,我会下载它。

所以它起作用了。但是它真的很慢,因为服务器上有数千个文件,每次我都验证每个文件的日期。例如,当我发现一个文件太旧时,可以中止list()命令吗?或者还有其他更明智的方法来加快这一过程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-12 09:50:06

是的,有一种方法可以中止长时间播放的命令。当您调用QFtp::list()时,它将在Ftp服务器上启动执行命令,如果命令找到一个条目,QFtp就会发出QFtp::listInfo(const QUrlInfo &)信号。您可以处理该信号,并检查QUrlInfo::lastModified()返回时间是否太长。如果是,您可以调用QFtp::abort()函数来中止list命令在服务器上的执行。下面是示例代码:

建立连接以处理ftp信号

代码语言:javascript
复制
connect(ftp, SIGNAL(listInfo(const QUrlInfo &)),
        this, SLOT(onNewEntry(const QUrlInfo &)));

listInfo信号处理槽的实现:

代码语言:javascript
复制
void MyFtp::onNewEntry(const QUrlInfo &url)
{
    // If url.lastModified() is less than some time
    // ftp->abort();    
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23605597

复制
相关文章

相似问题

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