ソケット接続で受け取ったバイトを圧縮解除するjavaコードがあります...サーバPCが32ビットで、zlib.dllを使用していても同じコードが使用されていると解凍できますサーバーが64ビットプロセッサー& OSに変更されたときにDataFormatExceptionがスローされ、サーバーシステムはzlib64.dllを使用して圧縮します。サーバー側のシステムによるとJavaのzlib圧縮解除エラー
(これは、サーバー側のシステム会社が私たちに言っていることである)
- それはサーバーのプロセッサ& OSが32ビットか64ビットであるかどうかを確認し、それに応じてデータパケットを圧縮しますそれを送ってください。 マイコード:
Inflater inflater = new Inflater();
inflater.setInput(message);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(compHeader.MsgLen);
byte[] buffer = new byte[1024];
while (!inflater.finished()) {
int count = 0;
try {
count = inflater.inflate(buffer); // ERROR LINE - THROWS DATAFORMATEXCEPTION of java.util.zip java package
} catch (DataFormatException ex) {
Logger.getLogger(BroadCastManager.class.getName()).log(Level.SEVERE, null, ex);
}
outputStream.write(buffer, 0, count);
}
try {
outputStream.close();
} catch (IOException ex) {
Logger.getLogger(BroadCastManager.class.getName()).log(Level.SEVERE, null, ex);
}
あなたは両方を扱うことができるコードの代替提供できます - 32ビットおよび64ビットの??何がこの問題の実際の理由であると言えるでしょうか?
私はその理由がアーキテクチャではないと信じています。 [zlib FAQ](http://www.gzip.org/zlib/zlib_faq.html#faq25) 'zlibはビッグエンディアンまたはリトルエンディアンアーキテクチャで動作し、それらの間で圧縮データを交換できますか? - はい、はい.'ダミーデータの例(圧縮された「hello world」など)を提供できますか? – SubOptimal
更新 - サーバー側のチームによれば、エラーは新しいハートビートバイトパケットを処理できないためです...悲しいことに、この問題はまだ私たちによって解決されていません。サーバーサイドチーム。 –
あなたは受け取ったデータをダンプして自分で調べることができます。サーバーチームが何を意味するのかをさらに知ることなく、ハートビートパッケージがデータ破損につながるというのはちょっと奇妙に聞こえます。 – SubOptimal