네트워크 모델
네트워크 계층
WinSock과 .NET 클래스
- 소켓 API
- 네트워크 프로그래밍에 있어 소켓(socket)은 네트워크 표준 API로 여겨지고 있는데, 소켓(socket)은 버클리 유닉스 (BSD Unix)에서 처음 개발되었으며, 다양한 OS에서 네트워크 표준으로 사용
- WinSock API
- WinSock API를 사용하기 위해서는 C/C++ 프로그램을 사용
- .NET NetWork Class
- .NET Framework은 WinSock API 를 사용하기 위해 Wrapper 클래스들을 제공
- 핵심 클래스로 System.Net.Sockets 네임스페이스 안에 있는 TcpClient, TcpListner, UdpClient, Socket 클래스들이 있다.
- TcpClient는 TCP 클라이언트를 위한 기능들을 제공
- TcpListner는 TCP 서버에 대한 기능을 제공
- UdpClient는 UDP 클라이언트와 서버 기능을 제공
- Socket 클래스는 Low Level의 소켓 프로그래밍 기능을 제공
- TcpClient, TcpListner, UdpClient는 내부적으로 Socket 클래스를 사용
- Socket 닷넷 클래스는 WinSock API를 호출
UDP 클라이언트
- 비동기 TCP 서버
- APM (Asynchronous Programming Model)
- BeginAcceptTcpClient() / EndAcceptTcpClient() 와 같이 Begin* / End* 2개의 메서드를 쌍으로 사용하는 방식
- Backward Compatibility를 위해 사용
- TAP (Task-based Asynchronous Pattern)
- AcceptTcpClientAsync() 와 같이 끝에 Async 가 붙는 메서드를 C# await 와 함께 사용하는 방식
- 비동기 처리를 단순화한 현대적 방식
- Example Code
UDP 서버
- 포트를 열고 클라이언트로부터 들어오는 데이타그램을 수신
- UDP 서버는 통상 UDP 포트를 Listening하고 있으면서 루프 안에서 계속 데이타 송수신을 처리하는 형태로 구현
- UDP 클라이언트로부터 데이타그램을 직접 받아 처리
- TCP 클라이언트 연결을 받아들여 Connection을 맺은 후에 데이타 송수신을 진행
- UDP 서버는 UDP 클라이언트와 같이 거의 동일한 기능을 갖기 때문에 별도의 UDP 서버 클래스가 없고 UdpClient 클래스를 사용
- Example Code (Udp Server)
- Example Code (UdpClient)
