Ich habe einen Java-Code, der dekomprimiert (zlib-Komprimierung) Bytes in der Socket-Verbindung empfangen ... das System ist in der Lage zu entpacken, wenn der Server PC 32 Bit ist und zlib.dll verwendet aber den gleichen Code löst DataFormatException aus, wenn der Server auf 64-Bit-Prozessor & OS geändert wird - und das Serversystem komprimiert zlib64.dll.zlib Dekomprimierungsfehler in Java
(Dies ist, was die Server-seitige System Company zu uns sagt)
Nach Server-Side-System - es wird überprüft, ob der Server-Prozessor & OS 32bit oder 64bit ist und dann die Datenpakete entsprechend komprimieren und sende es. Mein Code:
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);
}
können Sie einen Code alternativen schaffen, die sowohl handhaben kann - 32-Bit und 64-Bit-?? oder sagen, was könnte der eigentliche Grund für dieses Problem sein?
Ich glaube, der Grund ist nicht die Architektur. Aus der [zlib FAQ] (http://www.gzip.org/zlib/zlib_faq.html#faq25) 'Wird zlib an einer Big-Endian- oder Little-Endian-Architektur arbeiten, und kann ich komprimierte Daten zwischen ihnen austauschen? - Ja und Ja. Können Sie ein Dummy-Beispiel angeben (z. B. komprimiertes "Hallo Welt" oder so). – SubOptimal
Update - nach der Server-Seite Team - der Fehler ist aufgrund der Unfähigkeit der Handhabung der neuen Heartbeat-Byte-Pakete ... Traurig zu sagen, dass dieses Problem noch nicht von uns gelöst ist, viel Komplikation an unserem Ende sowie an der Serverseite Team. –
Sie können die Daten, die Sie erhalten, trotzdem ablegen und selbst untersuchen. Ohne weiter zu wissen, was Ihr Server-Team meint, klingt es ein bisschen komisch, dass ein Heartbeat-Paket zu Datenkorruption führen sollte. – SubOptimal