Qt 4.6中的FTPS(FTP-SSL)

ata*_*man 5 ftp ssl qt openssl qt4

我试图让FTP-SSL与Qt 4.6.3一起使用.我已经用OpenSSL支持编译了Qt.有关Qt的FTPS有什么好的资源吗?似乎QFtp不提供SSL支持.我真的不想创建自己的FTPS实现.

//编辑:我发现了QNetworkAccessManager(ty @ frank),但我找不到任何有用的SSL文档或示例.多数民众赞成我正在尝试的:

QUrl url = QUrl("ftp://localhost/filex.txt");
url.setUserName("root");
url.setPassword("root");
QNetworkRequest request(url);
QSslConfiguration SslConfiguration(QSslConfiguration::defaultConfiguration());
request.setSslConfiguration(SslConfiguration);
manager->get(request);
Run Code Online (Sandbox Code Playgroud)

但FileZilla不会让我联系.FZ控制台说:

(000035)21.12.2010 17:31:46 - (未登录)(127.0.0.1)> USER root

(000035)21.12.2010 17:31:46 - (未登录)(127.0.0.1)> 530需要SSL

FileZilla配置:

  • 启用FTP over SSL/TLS支持
  • 已启用TLS的显式FTP
  • 不允许使用普通的未加密FTP
  • SSL强制进行root登录

我至少会期待某种sslErrors信号,因为用户/ pw很好而且SSL失败了,但我只是得到了authenticationRequired信号.

谢谢你的帮助!

Pio*_*ost 4

不幸的是,Qt 中没有现成的 FTPS 解决方案。

  • QFtp实现了许多ftp命令但不支持加密。
  • QNetworkAccessManager仅支持基本的 ftp 功能(文件下载/上传),也不支持 ftp 加密。值得一提的是,它确实支持 HTTP 加密,这是它主要设计的协议。
  • QSslSocket实现 SSL,但没有像 FTP 或 HTTP 这样的特定协议

考虑到以上信息,我想到了一个想法,将其QFtpQSslSocket加密的 FTP 混合使用。问题是QFtp类没有允许使用QFtp用户提供的套接字的方法。相比之下QHttp有这样的方法——int QHttp::setSocket(QTcpSocket * socket)

底线;根据 Thiago Macieira(设计者QNetworkAccessManager)的说法,要走的路是使用 FTP 协议来实现QSslSocket