[c#] 직렬화와 네트워크 통신
이번에는 C#에서의 직렬화와 네트워크 통신에 대해 알아보겠습니다.
1. 직렬화 (Serialization)
직렬화란 객체를 외부 데이터 형식으로 변환하는 과정을 말합니다. C#에서는 BinaryFormatter
나 Json.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#에서는 TcpClient
와 TcpListener
를 사용하여 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. 참고 자료
- Microsoft Docs: 직렬화
- Microsoft Docs: 네트워크 프로그래밍