gpt4 book ai didi

c++ - 使用 QFtp,中止 list() 命令

转载 作者:太空宇宙 更新时间:2023-11-04 13:50:30 29 4
gpt4 key购买 nike

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

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

  • 到服务器的连接和身份验证。

  • list() 命令列出所有文件。

  • 对于 list() 命令列出的每个文件,我调用一个插槽来验证当前列出的文件是否尚未下载(我依赖于文件的日期)。如果文件足够新,我会下载它。

所以,它有效。但它真的很慢,因为服务器上有数千个文件,每次我都会验证每个文件的日期。例如,当我发现一个文件太旧时,是否可以中止 list() 命令?还是有另一种更聪明的方法来加快流程?

最佳答案

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

建立连接以处理 ftp 信号

connect(ftp, SIGNAL(listInfo(const QUrlInfo &)),
this, SLOT(onNewEntry(const QUrlInfo &)));

listInfo 信号处理槽的实现:

void MyFtp::onNewEntry(const QUrlInfo &url)
{
// If url.lastModified() is less than some time
// ftp->abort();
}

关于c++ - 使用 QFtp,中止 list() 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23605597/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com