[java] 자바 소켓 프로그래밍에서의 데이터 압축과 압축 해제

이 글에서는 자바 소켓 프로그래밍에서 데이터를 압축하고 압축을 해제하는 방법에 대해 알아보겠습니다.

데이터 압축

데이터를 전송하기 전에 압축하는 것은 대역폭을 절약하고 전송 시간을 단축하는 데 도움이 됩니다. 자바에서는 java.util.zip 패키지를 사용하여 데이터를 압축할 수 있습니다. 아래는 압축하기 위한 예제 코드입니다.

import java.io.*;
import java.util.zip.*;

public class DataCompressor {
    public static byte[] compressData(byte[] input) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try (GZIPOutputStream gzipOut = new GZIPOutputStream(baos)) {
            gzipOut.write(input);
        }
        return baos.toByteArray();
    }
}

위의 코드는 GZIPOutputStream을 사용하여 데이터를 압축합니다.

데이터 압축 해제

전송된 압축 데이터를 받은 후에는 압축을 해제해야 합니다. 자바에서는 java.util.zip 패키지를 사용하여 데이터를 압축 해제할 수 있습니다. 아래는 압축을 해제하는 예제 코드입니다.

import java.io.*;
import java.util.zip.*;

public class DataDecompressor {
    public static byte[] decompressData(byte[] input) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try (ByteArrayInputStream bais = new ByteArrayInputStream(input);
             GZIPInputStream gzipIn = new GZIPInputStream(bais)) {
            byte[] buffer = new byte[1024];
            int len;
            while ((len = gzipIn.read(buffer)) > 0) {
                baos.write(buffer, 0, len);
            }
        }
        return baos.toByteArray();
    }
}

위의 코드는 GZIPInputStream을 사용하여 데이터를 압축 해제합니다.

이제 데이터를 압축하고 압축을 해제하는 방법에 대해 알았습니다. 이러한 기술은 네트워크 프로그래밍에서 대역폭을 절약하고 전송 시간을 단축하는 데 유용합니다.

더 자세한 정보는 Oracle Java Documentation를 참조하시기 바랍니다.