[c#] C# 직렬화와 데이터 전송

C#에서는 객체를 직렬화하여 데이터를 전송할 수 있습니다. 직렬화는 객체를 데이터 스트림으로 변환하여 네트워크를 통해 전송하거나 파일에 저장하는 과정을 말합니다.

직렬화란?

직렬화(Serialization)는 객체를 바이트 스트림으로 변환하는 과정을 말합니다. 변환된 바이트 스트림은 네트워크를 통해 전송되거나 파일로 저장될 수 있습니다. 여기서 중요한 점은 다시 원래의 객체로 역직렬화할 수 있다는 것입니다.

C#에서의 직렬화

C#에서는 System.Runtime.Serialization 네임스페이스를 사용하여 직렬화를 구현할 수 있습니다. 일반적으로 직렬화하려는 클래스에 [Serializable] 속성을 추가하고, BinaryFormatter 클래스를 사용하여 직렬화합니다.

[Serializable]
public class MyClass
{
    public int MyProperty { get; set; }
    public string MyField;
}

// 직렬화
MyClass instance = new MyClass();
instance.MyProperty = 123;
instance.MyField = "Hello, World!";

BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream("data.bin", FileMode.Create))
{
    formatter.Serialize(stream, instance);
}

위의 예제에서 MyClass[Serializable] 속성을 갖는 클래스로, BinaryFormatter를 사용하여 data.bin 파일에 해당 객체를 직렬화하고 있습니다.

데이터 전송

직렬화된 데이터는 네트워크를 통해 전송될 수 있습니다. 이때, 직렬화된 데이터를 수신 측에서는 역직렬화하여 다시 객체로 복원할 수 있습니다.

C#에서는 NetworkStreamTcpClient 클래스를 사용하여 손쉽게 데이터를 전송할 수 있습니다. 아래는 간단한 예제 코드입니다.

// 데이터 전송
using (TcpClient client = new TcpClient("server_ip", port))
{
    NetworkStream stream = client.GetStream();
    formatter.Serialize(stream, instance);
}

위의 예제에서 TcpClient를 사용하여 서버에 연결하고, formatter를 사용하여 직렬화된 데이터를 전송하고 있습니다.

결론

C#에서의 직렬화와 데이터 전송은 객체를 효율적으로 네트워크 상에서 전송하고 저장하는 데 도움을 줍니다. 따라서, 직렬화와 데이터 전송은 C# 프로그래밍에서 중요한 부분이며, 효율적인 데이터 교환을 위해 잘 이해하고 활용해야 합니다.

참고 자료:

이상으로 C# 직렬화와 데이터 전송에 대해 알아보았습니다. 부족한 부분이 있을 수 있으니 참고 자료를 통해 자세한 내용을 확인하시기 바랍니다.