728x90
클라이언트
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace _20210202_UDP_Server
{
class Program
{
static void Main(string[] args)
{
// (1) UdpClient 객체 성성. 포트 10262 에서 Listening
UdpClient srv = new UdpClient(10262);
// 클라이언트 IP를 담을 변수
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
Console.WriteLine("에코 서버 시작");
while (true)
{
// (2) 데이타 수신
byte[] dgram = srv.Receive(ref remoteEP);
Console.WriteLine("[Receive] {0} 로부터 {1} 바이트 수신", remoteEP.ToString(), dgram.Length);
Console.WriteLine("[Receive] {0} ", Encoding.UTF8.GetString(dgram));
// (3) 데이타 송신
srv.Send(dgram, dgram.Length, remoteEP);
Console.WriteLine("[Send] {0} 로 {1} 바이트 송신", remoteEP.ToString(), dgram.Length);
Console.WriteLine("[Send] {0} ", Encoding.UTF8.GetString(dgram));
}
}
}
}
서버
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace _20210201_UDP_Test_2
{
class Program
{
static void Main(string[] args)
{
// (1) UdpClient 객체 성성
UdpClient cli = new UdpClient();
// string --> byte[]
string msg = "KDT_PLC_M";
byte[] datagram = Encoding.UTF8.GetBytes(msg);
// (2) 데이타 송신
cli.Send(datagram, datagram.Length, "192.1.2.70", 10262);
Console.WriteLine("[Send] 192.1.20.70:10262 로 {0} 바이트 전송", datagram.Length);
Console.WriteLine("[Send] {0}", Encoding.UTF8.GetString(datagram));
// (3) 데이타 수신
IPEndPoint epRemote = new IPEndPoint(IPAddress.Any, 0);
byte[] bytes = cli.Receive(ref epRemote);
Console.WriteLine("[Receive] {0} 로부터 {1} 바이트 수신", epRemote.ToString(), bytes.Length);
Console.WriteLine("[Receive] {0}", Encoding.UTF8.GetString(bytes));
// (4) UdpClient 객체 닫기
cli.Close();
// 꺼짐 방지
Console.ReadLine();
}
}
}
간단한 C# UDP 서버와 클라이언트 코드 입니다.
다음에는 비동기로 작성 해봐야겠습니다.
www.csharpstudy.com/net/article/7-UDP-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8
참조 했습니다.
728x90
'C#' 카테고리의 다른 글
C# 스레드, 쓰레드(Thread) 파라미터, 매개변수 전달 하기 (1) | 2021.02.05 |
---|---|
C# 쓰레드, 스레드(Thread) 에서 UI 변경, 접근 하기 (0) | 2021.02.05 |
c# 문자 양식 변경, 문자 포맷 변경, 문자 서식 변경 (0) | 2021.02.04 |
C# 2진수, 10진수, 16진수 표현 (0) | 2021.02.04 |
c# Dictionary(코틀린 MAP) 값 수정 가능한 ConcurrentDictionary (0) | 2021.02.04 |