[java] 소켓 통신에서의 데이터 직렬화 및 역직렬화 기술

데이터 송수신을 위한 소켓 통신 시스템에서는 데이터를 전송 가능한 형식으로 변환하는 과정이 필요합니다. 이를 위해 데이터 직렬화역직렬화 기술을 사용하여 객체를 이진 형태로 변환하여 전송하고, 수신측에서는 다시 객체로 변환하는 과정을 거칩니다.

데이터 직렬화


데이터 직렬화는 객체를 이진 형태로 변환하는 과정을 말합니다. Java에서는 Serializable 인터페이스를 구현하여 직렬화를 지원합니다. 해당 인터페이스를 구현한 객체는 ObjectOutputStream을 사용하여 데이터를 이진 형태로 변환할 수 있습니다.

import java.io.*;

public class SerializationExample {
    public static void main(String[] args) {
        try {
            FileOutputStream fileOut = new FileOutputStream("data.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(new MyClass());
            out.close();
            fileOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

데이터 역직렬화


데이터 역직렬화는 직렬화된 이진 데이터를 객체로 변환하는 과정을 말합니다. Java에서는 ObjectInputStream을 사용하여 역직렬화를 수행할 수 있습니다.

import java.io.*;

public class DeserializationExample {
    public static void main(String[] args) {
        try {
            FileInputStream fileIn = new FileInputStream("data.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            MyClass obj = (MyClass) in.readObject();
            in.close();
            fileIn.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

직렬화 데이터 전송 및 수신


소켓 통신에서는 직렬화된 데이터를 전송하고, 수신측에서는 역직렬화하여 객체로 복원하는 과정을 거칩니다. 이를 통해 객체를 네트워크를 통해 안전하게 전송할 수 있습니다.

위와 같은 방법으로 직렬화 및 역직렬화 기술을 사용하여 소켓 통신 시스템에서 데이터를 안전하고 효율적으로 처리할 수 있습니다.

참고 자료