c++ - 如何避免 QNetworkRequest 将 RHELP 动词发送到 FTP 服务器?

标签 c++ qt ftp ftp-client

场景:
我正在我的应用程序中实现一个 FTP get 功能,它使用 Qt 4.7.x
Qt 文档指出 QFtp已弃用,改为使用 QNetworkAccessManager,所以我正在做 ;)
我用一些 FTP 测试了我编写的代码服务器在那里,它似乎工作正常。

问题:
当我使用我的 ftp get 类连接到我本地的、自制的(非常简单的)ftp 服务器时,我收到以下错误:请求:500 无可用帮助。 我使用 tcpdump 跟踪了 ftp 通信,实际上我看到 QNetworkAccessManager/QNetworkRequest 向服务器发送一个 HELP 动词,一旦它得到 < strong>230 用户登录

不幸的是我的服务器不支持。现在有没有办法配置 Qt 不发送帮助动词?在线阅读有关类(class)的 Qt Doc 没有帮助。

最佳答案

除非您想重新实现 FTP 后端,否则可能无法避免这种情况。通过浏览source code for the FTP backend ,你可以发现发送HELP命令的目的是查看服务器是否支持“SIZE”和“MDTM”命令。

可能最简单的解决方案是在您的 FTP 服务器中为 HELP 命令实现一个最小的处理程序,以适当的 200/211/214 响应进行响应。

编辑:参见 http://qt.gitorious.org/qt/qt/blobs/4.8/src/network/access/qnetworkaccessftpbackend.cpp#line350后端对响应的期望。这并不复杂。

关于c++ - 如何避免 QNetworkRequest 将 RHELP 动词发送到 FTP 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10482991/

相关文章:

c++ - 如何从另一个 C++ win32 控制台应用程序调用 C++ Win32 DLL

qt - 如何防止 QAbstractScrollArea/QTableView 水平滚动?

java - FTP 连接输入流挂起

java - 奇怪的 FTPClient.storeFile 行为

c++ - 找不到可用的 C 编译器

c++ - 使用正则表达式查找多个字符串的第一个实例

c++ - 链接列表释放内存 - 段错误

c++ - 对 QImage 执行深拷贝

c++ - 如何使用 Qt Creator 将视频文件上传到远程 MySQL 服务器

iphone - iOS:FTP TLS 连接