如何避免 QNetwork请求将 RHELP 动词发送到 FTP 服务器
How to avoid QNetworkRequest to send the RHELP verb to the FTP Server?
场景:
我正在我的应用程序中实现使用 Qt 4.7.x
的 FTP 获取功能Qt文档指出QFtp类已被弃用,改用QNetworkAccessManager,所以我正在做;)
我用一些FTP服务器测试了我编写的代码,它似乎工作正常。
问题:
当我使用我的 ftp get 类连接到我的本地自制(非常简单(ftp 服务器时,我收到以下错误:请求:500 没有可用的帮助。我使用 tcpdump 跟踪了 ftp 通信,实际上我看到 QNetworkAccessManager/QNetworkRequest 向服务器发送一个 HELP 动词,一旦它获得 230 个用户登录
不幸的是,我的服务器不支持。现在有没有办法将Qt配置为不发送HELP动词?在线阅读相关课程的Qt Doc并没有帮助。
可能没有办法避免这种情况,除非你想重新实现FTP后端。通过浏览FTP后端的源代码,您可以发现发送HELP
命令的目的是找出服务器是否支持"SIZE"和"MDTM"命令。
最简单的解决方案可能是在 FTP 服务器中为 HELP 命令实现一个最小的处理程序,该处理程序以适当的 200/211/214 响应进行响应。
编辑:请参阅 http://qt.gitorious.org/qt/qt/blobs/4.8/src/network/access/qnetworkaccessftpbackend.cpp#line350,了解后端对响应的期望。这并不复杂。
它不可配置。您可以在此处查看正在发生的事情的源代码:http://qt.gitorious.org/qt/qt/blobs/4.7/src/network/access/qnetworkaccessftpbackend.cpp#line300
如果你可以构建自己的Qt版本,那么它可以很容易地被抑制。但是,升级 FTP 服务器以支持 HELP 命令可能更容易。
- FTP服务器试图登录时奇怪的响应
- 连接到 FTP 服务器并访问文件
- 如何在不保存文件的情况下制作打印屏幕并将其发送到FTP服务器?我的工作代码将文件保存到HDD
- 在 FTP 服务器中正确实现 LIST 命令
- Internet Connect无法通过FTP代理连接到FTP服务器
- FTP服务器端口处于主动模式和被动模式
- 使用Libcurl从FTP服务器下载多个文件
- C++:如何使用libcurl检查FTP服务器上是否存在目录
- 判断文件是否为FTP服务器上的目录
- 动态分配内存以接收FTP服务器的LIST响应时的SIGSEGV
- 创建虚假 ftp 服务器的程序
- 如何避免 QNetwork请求将 RHELP 动词发送到 FTP 服务器
- FTP 服务器无法正确处理'rn'
- QNetworkAccessManager上载到本地FTP服务器
- 用于RPi2的UWP FTP服务器
- 如何在ftp服务器/客户端将数据发送到TCP套接字之前从其获取数据
- 如何获得ftp服务器中所有文件和文件夹的列表(c++)
- 终止ftp服务器上的数据传输时的客户端行为
- 为FTP服务器制作文件-当头文件被修改时编译
- 我不能上传文件到FTP服务器