消息压缩和解压缩
程序员文章站
2022-05-15 17:41:58
...
无线开发时,一方面出于给玩家节省流量的考虑,一方面为了加快网络传输速度,需要对过大的消息进行。消息字节大小小于256的压缩就没有太大意义,建议对大于1k的消息进行压缩处理,具体数据可以根据自己的业务进行设定。
参考java代码如下
参考java代码如下
/**
* 对消息进行压缩,并返回压缩后的字节数组
*
* @param bodyBuf
* @return
* @throws IOException
*/
private static byte[] compress(IoBuffer bodyBuf) throws IOException {
ByteArrayOutputStream fos = new ByteArrayOutputStream();
ZipOutputStream zops = new ZipOutputStream(fos);
try {
zops.putNextEntry(new ZipEntry("t"));
byte[] byteArr = new byte[bodyBuf.limit()];
bodyBuf.get(byteArr);
zops.write(byteArr);
} finally {
zops.flush();
zops.close();
fos.flush();
fos.close();
}
return fos.toByteArray();
}
//解压缩
private static void decompress(byte[] bytes) throws IOException {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ZipInputStream zis = new ZipInputStream(bais);
zis.getNextEntry();
int k = 0;
int ir = -1;
IoBuffer ioBuffer = IoBuffer.allocate(8192);
ioBuffer.setAutoExpand(true);
while ((ir = zis.read()) != -1) {
k++;
System.err.print(Integer.toHexString(ir) + " ");
ioBuffer.put((byte) ir);
}
System.err.println("\nByteLength:" + k);
ioBuffer.flip();
System.err.println("decompress:" + ioBuffer);
}
下一篇: lucene-索引RTF文档