ソケットを介してデータを圧縮して送信するアプリケーションがあり、受信したデータはリモートマシンに書き込まれます。リカバリ中に、このデータは解凍されて取得されます。圧縮/解凍は「zlib」を使用して行われます。しかし、解凍中に次の問題がランダムに発生します。
zlib inflate()は、.xls、.qbwなどのバイナリファイルに対してエラー「Z_DATA_ERROR」で失敗します。
アプリケーションは、ファイルから読み取られたデータを使用してループ内の「1024」バイトのデータをブロック単位で圧縮し、同じ方法で解凍します。フォーラムの投稿から、Z_DATA_ERRORの理由の1つはデータの破損によるものであることがわかりました。現在、この問題を回避するために、送信中に圧縮されたデータと受信されたデータのCRCチェックを導入しました。これが発生する理由について考えられる理由は、本当にありがたいです。(これはランダムに発生し、同じファイルに対しては別の機会に機能するため)zlib inflate()およびdeflate()の誤った処理のbcozですか? 注:必要に応じて、さらに分析するために正確なコードスニペットを投稿します!
ありがとう...ウダイ