2015. 2. 2. 09:12
C# with UDP/IP
프로그램 설명
udp 클라이언트/서버 예제입니다.
UdpClient 클래스는 전송 및 동기 블록 모드 비 연결 UDP 데이터 그램 을 수신하기위한 간단한 방법을 제공합니다. UDP 는 비 연결 전송 프로토콜 이기 때문에, 전송 및 데이터를 수신 하기 전에 원격 호스트 연결을 설정할 필요가 없습니다.
다음의 두 가지 방법 중 하나를기본 원격 호스트를 확립 하는 옵션 을 가질 것 :
1. 원격 호스트 이름 및 매개 변수로 포트 번호를 사용하여 UdpClient 클래스의 인스턴스를 만듭니다.
2. UdpClient 클래스의 인스턴스를 생성 한 다음 연결 메소드를 호출합니다.
Receive method 의 IPEndPoint 을 이용해서 전송하는 호스트의 정보를 알 수 있습니다.
실행 후
메시지 전송 후
프로그램 작성 순서
1. 소켓과 관련한 네임스페이스를 서버/클라이언트 모두에 포함 시킵니다.
using System.Net; using System.Net.Sockets;
2. 서버 프로그램
byte[] data = new byte[1024]; IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050); UdpClient server = new UdpClient(ipep); Console.WriteLine("Waiting for a client...."); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); data = server.Receive(ref sender); Console.WriteLine("Message received from {0}", sender.ToString()); Console.WriteLine("received data : {0}", Encoding.UTF8.GetString(data, 0, data.Length)); string welcome = "Welcome to my udp server"; data = Encoding.UTF8.GetBytes(welcome); server.Send(data, data.Length, sender); while(true) { data = server.Receive(ref sender); Console.WriteLine("received data : {0}", Encoding.UTF8.GetString(data, 0, data.Length)); server.Send(data, data.Length, sender); Console.WriteLine("send data : {0}", Encoding.UTF8.GetString(data, 0, data.Length)); } server.Close();
3. 클라이언트 프로그램
byte[] data = new byte[1024]; string input, stringData; UdpClient client = new UdpClient("192.168.0.12", 9050); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); string welcome = "hello, udp server?"; data = Encoding.UTF8.GetBytes(welcome); client.Send(data, data.Length); data = client.Receive(ref sender); Console.WriteLine("Message received from {0}", sender.ToString()); stringData = Encoding.UTF8.GetString(data, 0, data.Length); Console.WriteLine(stringData); while(true) { Console.Write("send data : "); input = Console.ReadLine(); if (input == "exit") break; data = Encoding.UTF8.GetBytes(input); client.Send(data, data.Length); data = client.Receive(ref sender); stringData = Encoding.UTF8.GetString(data); Console.WriteLine("received data : {0}", stringData); } client.Close(); Console.WriteLine("Stopping clinet");
'C# with UDP/IP' 카테고리의 다른 글
[Program C#]Broadcast (0) | 2015.02.25 |
---|---|
[Program C#]UDP Multicast (0) | 2015.02.12 |
[Program C#]UDP 통신 - 기본(Socket) - 콘솔 버전 (1) | 2015.02.02 |
TCP & UDP 비교 (0) | 2015.02.02 |