3

シナリオ: Qt 4.7.xを使用するアプリケーションにFTP get機能を
実装しています Qt のドキュメントには、QFtpクラスは非推奨であり、代わりに QNetworkAccessManager を使用することが記載されているため、私はそうしています ;)私が書いたコードをテストしましたそこにいくつかのFTPサーバーがあり、正常に動作しているようです。

問題:
ftp get クラスを使用して自作の (そして非常に単純な) ローカルの ftp サーバーに接続すると、次のエラーが表示されます: Request: 500 No Help Available. tcpdumpを 使用して ftp 通信を追跡したところ、実際にQNetworkAccessManager/QNetworkRequestが230 User Logged Inを取得すると、サーバーにHELP動詞を送信することがわかりました。

残念ながら、私のサーバーはそれをサポートしていません。HELP動詞を送信しないようにQtを設定する方法はありますか? 関連するクラスについて Qt Doc をオンラインで読んでも役に立ちませんでした。

4

2 に答える 2

3

FTP バックエンドを再実装したい場合を除き、おそらくこれを回避する方法はありません。FTP バックエンドのソース コードを参照すると、コマンドを送信する目的はHELP、サーバーが「SIZE」および「MDTM」コマンドをサポートしているかどうかを確認することであることがわかります。

おそらく最も簡単な解決策は、適切な 200/211/214 応答で応答する HELP コマンドの最小限のハンドラーを FTP サーバーに実装することです。

編集:バックエンドが応答から期待するものについては、 http: //qt.gitorious.org/qt/qt/blobs/4.8/src/network/access/qnetworkaccessftpbackend.cpp#line350を参照してください。複雑ではありません。

于 2012-05-07T14:00:19.567 に答える
3

構成可能ではありません。ここで何が起こっているかのソースコードを見ることができます: http://qt.gitorious.org/qt/qt/blobs/4.7/src/network/access/qnetworkaccessftpbackend.cpp#line300

独自のバージョンの Qt をビルドできる場合は、簡単に抑制できます。ただし、FTP サーバーをアップグレードして HELP コマンドをサポートする方が簡単な場合があります。

于 2012-05-07T13:58:29.130 に答える