안녕하세요! 오늘은 C#을 활용한 LAN(Local Area Network) 네트워크 연결 방법에 대해 알아보겠습니다! 네트워크 프로그래밍은 클라이언트-서버 모델을 구현하는 데 필수적인 요소로, 여러 장치 간 통신을 가능하게 합니다. 이번 포스팅에서는 C#에서 LAN을 통한 통신을 구현하는 방법과 예제 코드를 소개하겠습니다.
1. C#에서 네트워크 프로그래밍을 위한 System.Net.Sockets
C#에서 네트워크 연결을 설정하려면 System.Net.Sockets 네임스페이스를 사용합니다. 이 네임스페이스는 TCP 및 UDP 소켓을 활용한 통신을 지원하며, 이를 통해 서버와 클라이언트 간 데이터 송수신이 가능합니다.
2. TCP 서버와 클라이언트 구현
TCP(Transmission Control Protocol)는 연결 지향형 프로토콜로 신뢰성 있는 데이터 전송을 보장합니다.
2.1 TCP 서버 코드
아래는 간단한 TCP 서버를 구현한 코드입니다. 서버는 특정 포트를 열어 클라이언트의 연결을 대기합니다.
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class TcpServer
{
static void Main()
{
TcpListener server = new TcpListener(IPAddress.Any, 5000);
server.Start();
Console.WriteLine("서버가 실행되었습니다. 클라이언트를 기다리는 중...");
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("클라이언트가 연결되었습니다!");
NetworkStream stream = client.GetStream();
byte[] buffer = Encoding.UTF8.GetBytes("Hello, Client!");
stream.Write(buffer, 0, buffer.Length);
client.Close();
server.Stop();
}
}
2.2 TCP 클라이언트 코드
클라이언트는 서버의 IP와 포트를 지정하여 연결을 시도합니다.
using System;
using System.Net.Sockets;
using System.Text;
class TcpClientProgram
{
static void Main()
{
TcpClient client = new TcpClient("127.0.0.1", 5000);
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
Console.WriteLine("서버로부터 받은 메시지: " + Encoding.UTF8.GetString(buffer, 0, bytesRead));
client.Close();
}
}
이제 서버를 실행한 후 클라이언트를 실행하면, 클라이언트가 서버에 접속하고 메시지를 받을 수 있습니다.
3. UDP 통신 구현
UDP(User Datagram Protocol)는 비연결형 프로토콜로 빠른 데이터 전송이 필요할 때 사용됩니다.
3.1 UDP 서버 코드
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class UdpServer
{
static void Main()
{
UdpClient server = new UdpClient(5000);
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
Console.WriteLine("UDP 서버가 실행되었습니다.");
byte[] data = server.Receive(ref remoteEP);
Console.WriteLine("받은 메시지: " + Encoding.UTF8.GetString(data));
server.Close();
}
}
3.2 UDP 클라이언트 코드
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class UdpClientProgram
{
static void Main()
{
UdpClient client = new UdpClient();
byte[] data = Encoding.UTF8.GetBytes("Hello, UDP Server!");
client.Send(data, data.Length, "127.0.0.1", 5000);
Console.WriteLine("메시지를 서버로 전송했습니다.");
client.Close();
}
}
4. LAN 연결 시 고려해야 할 사항
- 방화벽 설정: 프로그램이 LAN에서 정상적으로 작동하려면 방화벽에서 해당 포트를 허용해야 합니다.
- 고정 IP 설정: 동일한 네트워크 내에서 연결하려면 서버의 IP를 고정하는 것이 좋습니다.
- 포트 포워딩: LAN을 넘어 인터넷을 통한 접속이 필요하다면, 라우터에서 포트 포워딩 설정이 필요합니다.
마무리
이제 C#을 사용하여 LAN을 통한 통신을 구현하는 방법을 배웠습니다. TCP는 신뢰성 있는 데이터 전송이 필요할 때, UDP는 빠른 데이터 전송이 필요할 때 사용됩니다. 프로젝트에서 네트워크 기능이 필요하다면 위의 방법을 활용해보세요!
이 글이 도움이 되셨다면 좋아요와 댓글 부탁드립니다! 😊