본문 바로가기
C#

C# UDP Client

by Killing_me__ 2021. 11. 23.
반응형

UDP 포로토콜

 

UDP(User Datagram Protocol)는 TCP와 같이 IP에 기반한 Transport Layer 프로토콜이다. 

UDP의 기능은 단 2가지 인데, IP 위에 포트를 더하는 일, 데이터 Corruption을 감지해 불량 데이터를 폐기하는 일이다.

TCP는 송수신 전에 반드시 연결이 되어야 한다는 전제가 있는 반면, UDP는 별도의 연결이 필요 없다.

UDP의 단점은 데이터가 중간에 유실될 수 있고, 데이터가 도달하는 순서도 뒤바뀔 수 있으나,

연결이 필요 없고 통신 절차가 단순하기 때문에 더 효율적일 수 있으며, 데이터의 신뢰성이 중요하지 않은 경우에 유용하게 사용될 수 있다.

또한 UDP는 Broadcast와 Multicast에 유용하게 사용된다.

 

UDP 클라이언트를 사용하는 방법

 

1. UDP 통신을 위해 네임스페이스의 UdpClient 객체를 생성한다. 클라이언트 생성자에서 서버와 포트를 줄 수도 있으나, 하나의 UdpClient 객체로 여러 서버에 데이터를 보낼 경우는 Send() 메서드에서 서버와 포트를 지정한다.

2. UdpClient 객체의 Send() 메서드를 사용하여 데이터를 서버로 보낸다. 네트워크 데이터 송수신은 기본적으로 바이트 데이터를 사용하는데, 문자열을 보낼 경우 먼저 바이트로 인코딩한 후 보내게 된다. 일반 영문은 ASCII로 인코딩하고, 한글 등 비영문 문자열은 UTF 인코딩을 사용한다.

UDP 데이터그램은 최대 65,507 바이트까지 전송할 수 있다.

3. UDP에서 데이터를 수신할 경우는 UdpClient 객체의 Receive() 메서드를 사용한다 Receive() 메서드는 특히 수신 데이터와 함께 상대 컴퓨터의 종단점(IP addr, PORT) 정보도 같이 전달받는데, 이를 위해 IPEndPoint 객체를 ref 파라미터로 전달한다. 이를 통해 데이터가 수신되면 누가 그 데이터를 전송했는지 알 수 있다.

반응형

댓글