我试图让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);
但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配置:
我至少会期待某种sslErrors
信号,因为用户/ pw很好而SSL失败,但我只收到authenticationRequired
信号。
感谢您的帮助!
答案 0 :(得分:4)
不幸的是,在Qt中没有开箱即用的FTPS解决方案。
QFtp
实现了许多ftp命令
但不支持加密。QNetworkAccessManager
仅支持
基本的ftp函数(文件
下载/上传)并不支持
在ftp的情况下加密。它的
值得一提的是它确实支持
HTTP加密,即
协议它主要是为。QSslSocket
实现了SSL,但没有
特定协议,如FTP或HTTP 考虑到上述信息,我们会想到将QFtp
与QSslSocket
混合以获得加密的FTP。问题是QFtp
类没有允许QFtp
使用用户提供的套接字的方法。通过比较QHttp
有这样一种方法 - int QHttp::setSocket(QTcpSocket * socket)
底线;根据Thiago Macieira(QNetworkAccessManager
的设计者)的说法,可以使用QSslSocket
来实现FTP协议。