消息压缩和解压缩

无线开发时,一方面出于给玩家节省流量的考虑,一方面为了加快网络传输速度,需要对过大的消息进行。消息字节大小小于256的压缩就没有太大意义,建议对大于1k的消息进行压缩处理,具体数据可以根据自己的业务进行设定。

参考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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值