2016-04-25 5 views
0

私はこの質問に対する答えを探していましたが、それを見つけることはできませんでした。QNetworkAccessManager経由でダウンロードしたファイルが壊れていないことを保証する方法はありますか?

私はQNetworkAccessManagerを使用してWebサーバーからファイルをダウンロードしていますが、このファイルが破損することなくダウンロードされていることを確認します。

私はかつて各ファイルに対してチェックサムを実装しましたが、これは面倒な作業になる可能性があります。以前私はちょうど腐敗がQNetworkAccessManagerで起こると仮定しました。 前提条件は、QNetworkAccessManagerのメソッドget()への呼び出しから返されたQNetworkReplyオブジェクトが終了信号を発行したことです。

QNetworkAccessManager経由でWebサーバーからダウンロードしたファイルが破損しないようにするにはどうすればよいですか?

+1

「破損した」ファイルとはどういう意味ですか?エラー(QNetworkReply :: NetworkError)のシグナルを試しましたか? – IAmInPLS

+0

質問が少し不明な場合は申し訳ありません。エラー信号が出力されず、終了信号が放出されたと仮定して、ダウンロードしたファイルが完全であることが保証されていますか? (私はreadyRead()信号を使ってダウンロードしたデータを読み込んでいます) – Phat

+0

ファイルのダウンロードが壊れていても、終了信号が常に出力されているので、いいえダウンロードしたファイルのサイズを確認する必要がありますここに](http://doc.qt.io/qt-5/qnetworkreply.html#uploadProgress) – IAmInPLS

答えて

1

TCP/IPはエラーのないデータ転送を保証しません。したがって、正しいサイズのファイルがQNetworkAccessManagerから取得されても、ファイルは破損する可能性があります。 TCP/IPより優れたエラーを検出するハッシュを使用する必要があります。これはQNetworkAccessManagerとは関係がありません。ウェブブラウザは同じ問題を抱えています。それ以外の場合は桃色のように見えても、ダウンロードが破損することがあります。

+0

私はこれまでに想定していたことを合理的に思っていました。だから私はまだハッシュを使用する必要があります。 – Phat

関連する問題