운영체제는 TCP/IP 통신을 위해 소켓이라는 기능을 만들어 두고 있으며, 닷넷 응용 프로그램도 소켓
을 이용해 다른 컴퓨터와 TCP/IP 통신을 할 수 있다. BCL에서 소켓은 말 그대로 Socket 타입으로 제공
된다.
Socket 생성자는 3개의 인자를 받는다.
public Socket(
AddressFamily addressFamily,
SocketType socketType,
ProtocolType protocolType
)
모든 인자가 enum 형식인데, 각 정의에 따르면 AddressFamily는 31개, SocketType은 6개,
ProtocolType은 25개의 값을 갖는다. 순수하게 조합의 수로만 봤을 떄 4650개의 사용법이 있지만
현실적으로 사용하는 방법은 딱 두 가지 조합만 있으므로 걱정하지 말자.
<aside> ☄️ 1. Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 2. Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
</aside>
우선, 첫 번째 조합인 “SocketType.Stream + Protocol.Tcp”로 생성된 소켓을 이름하여 “스트림 소켓”
또는 “TCP 소켓”이라고 한다. 그리고 두 번째인 “SocketType.Dgram + ProtocolType.Udp” 조합으로
생성된 소켓을 “데이터그램 소켓” 또는 “UDP 소켓”이라 한다
(이하 줄여서 “TCP 소켓”, “UDP 소켓”이라고 부르겠다).
TCP와 UDP가 모두 IP 프로토콜을 기반으로 동작한다.
어떤 유형의 소켓을 생성했느냐에 따라 이후의 프로그래밍 방식도 달라진다. 따라서 만들려는 프로
그램에 적합한 방식의 소켓을 미리 정해놓고 사용해야 한다. 간단하게 두 방식의 차이점을 정리하면