[java] 자바 소켓 프로그래밍에서의 데이터 압축과 압축 해제
import java.util.zip.Deflater;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class DataCompressor {
    public static byte[] compressData(byte[] input) throws IOException {
        Deflater deflater = new Deflater();
        deflater.setInput(input);
        deflater.finish();

        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(input.length);
        byte[] buffer = new byte[1024];
        
        while (!deflater.finished()) {
            int count = deflater.deflate(buffer);
            outputStream.write(buffer, 0, count);
        }

        outputStream.close();
        return outputStream.toByteArray();
    }
}

위의 코드는 Deflater 클래스를 사용하여 데이터를 압축하는 간단한 메서드를 보여줍니다.

이제, 데이터를 전송하는 쪽에서 압축된 데이터를 받았을 때, 이를 압축 해제해야 합니다. 자바에서는 Inflater 클래스를 사용하여 데이터를 압축 해제할 수 있습니다. 아래는 데이터를 압축 해제하는 예제 코드입니다.

import java.util.zip.Inflater;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class DataDecompressor {
    public static byte[] decompressData(byte[] input) throws IOException {
        Inflater inflater = new Inflater();
        inflater.setInput(input);

        ByteArrayOutputStream outputStream = new ByteArrayOutputStream(input.length);
        byte[] buffer = new byte[1024];
        
        while (!inflater.finished()) {
            int count = inflater.inflate(buffer);
            outputStream.write(buffer, 0, count);
        }

        outputStream.close();
        return outputStream.toByteArray();
    }
}

위의 코드는 Inflater 클래스를 사용하여 데이터를 압축 해제하는 간단한 메서드를 보여줍니다.

이러한 방식으로 자바 소켓 프로그래밍에서 데이터를 압축하고 압축을 해제할 수 있으며, 이를 통해 안전하고 효율적인 데이터 전송이 가능해집니다.

간단한 예제 코드를 참고하여 소게 부분에서 더 나은 코드를 작성하십시오.

자세한 내용은 Java Documentation를 참고하세요.