在服务器 (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 在一侧压缩并使用上面的代码在另一侧解压缩,所以我可以将其作为问题消除吗?另外,如果有人知道这里可能出了什么问题(我知道我在这里没有提供太多代码,但是项目相当大。
谢谢。