消息压缩和好压缩

消息压缩和解压缩
    无线开发时,一方面出于给玩家节省流量的考虑,一方面为了加快网络传输速度,需要对过大的消息进行。消息字节大小小于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);
	}