其他分享
首页 > 其他分享> > c – 如何避免QNetworkRequest将RHELP动词发送到FTP服务器?

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

作者:互联网

场景:
我正在我的应用程序中实现FTP get功能,它使用Qt 4.7.x.
Qt文档声明不推荐使用QFtp类,而是使用QNetworkAccessManager,所以我正在做;)我测试了我用一些FTP服务器编写的代码,它似乎工作正常.

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

不幸的是我的服务器不支持.现在有没有办法配置Qt不发送HELP动词?在线阅读相关课程的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,qt,ftp,ftp-client
来源: https://codeday.me/bug/20190826/1729284.html