[c#] 직렬화와 네트워크 통신

이번에는 C#에서의 직렬화와 네트워크 통신에 대해 알아보겠습니다.

1. 직렬화 (Serialization)

직렬화란 객체를 외부 데이터 형식으로 변환하는 과정을 말합니다. C#에서는 BinaryFormatterJson.NET을 사용하여 객체를 직렬화할 수 있습니다. 직렬화된 데이터를 네트워크를 통해 전송하거나 파일로 저장할 수 있습니다.

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
class Student
{
    public int ID { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main()
    {
        Student student = new Student { ID = 1, Name = "John" };

        BinaryFormatter formatter = new BinaryFormatter();
        using (MemoryStream stream = new MemoryStream())
        {
            formatter.Serialize(stream, student);
            byte[] data = stream.ToArray();
            // 네트워크 통신이나 파일로 데이터 전송
        }
    }
}

2. 네트워크 통신

C#에서는 TcpClientTcpListener를 사용하여 TCP 기반의 네트워크 통신을 구현할 수 있습니다.

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

class Program
{
    static void Main()
    {
        TcpListener server = new TcpListener(IPAddress.Any, 9999);
        server.Start();

        TcpClient client = server.AcceptTcpClient();
        NetworkStream stream = client.GetStream();

        byte[] data = new byte[1024];
        int bytesRead = stream.Read(data, 0, data.Length);
        string message = Encoding.ASCII.GetString(data, 0, bytesRead);
        Console.WriteLine(message);

        client.Close();
        server.Stop();
    }
}

3. 참고 자료