Java распаковывает массив байтов
На сервере (C ++) двоичные данные сжимаются с использованиемZLib
функция:
compress2()
и он отправляется клиенту (Java). На стороне клиента (Java) данные должны быть распакованы с использованием следующего фрагмента кода:
public static String unpack(byte[] packedBuffer) {
InflaterInputStream inStream = new InflaterInputStream(new ByteArrayInputStream( packedBuffer);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
int readByte;
try {
while((readByte = inStream.read()) != -1) {
outStream.write(readByte);
}
} catch(Exception e) {
JMDCLog.logError(" unpacking buffer of size: " + packedBuffer.length);
e.printStackTrace();
// ... the rest of the code follows
}
Проблема в том, что когда он пытается прочитать цикл while, он всегда выдает:
java.util.zip.ZipException: неверная длина хранимых блоков
Прежде чем я проверю другие возможные причины, может кто-нибудь сказать мне, могу ли я сжимать на одной стороне с compress2 и распаковывать его на другой стороне, используя приведенный выше код, чтобы я мог устранить это как проблему? Также, если у кого-то есть возможная подсказка о том, что может быть здесь не так (я знаю, что я не предоставил здесь слишком много кода, но проекты довольно большие.
Благодарю.