2014년 6월 15일 일요일

[C#] 소켓 클래스의 종류 [출처] [C#] 소켓 클래스의 종류 (TCP/IP 길라잡이) |작성자 Lisa

출처 : http://cafe.naver.com/eztcp/1020

제가 가장 처음 C#을 접했을 때 웹과 서적의 예제파일을 보며 의아했던 점이 있었습니다.
그건 바로 예제마다 다른 소켓 클래스 때문이었는데요,
어떤 예제에서는 Socket이라는 클래스를 사용하는 반면
어떤 곳에서는 TCPClient/TCPListener을 사용하고 있었습니다.
그 의문은 C# 소켓의 종류를 공부하며 자연스럽게 풀리게 되었는데요,
이번에는 그 소켓의 종류에 대해 설명하고자 합니다.

C#은 기본적으로 통합 라이브러리를 제공하는 API 프레임워크인 .NET을 사용하게 됩니다.
이 라이브러리들은 상위 클래스들을 제공하여 (여기서 상위클래스의 뜻은 '사람에게 가까운'라고 봐도 무방합니다)
복잡하고 상세한 부분을 구현할 필요 없이 사용자가 간편하게 사용할 수 있게 하였습니다.
소켓에서는 TCPClient/TCPListener가 이 역할을 하게 됩니다.
그런데 이 상위 클래스라는 것은 때때로 사용자의 니즈에 부합하지 못하는 경우가 있습니다.
유연함이나 효율성들이 많이 떨어지기 때문이죠.

그래서 .NET은 Socket이라는 클래스를 제공하게 되었는데,
이 것은 TCPClient/TCPListener보다 하위클래스라서 사용자가 비교적 까다롭게 사용하게 되지만
상위클래스에서 제공되지 않는 고급기능들을 사용할 수 있어 훨씬 유연하게 구현할 수 있습니다.

예를 들어 비동기 소켓 함수들의 경우 TCPClient/TCPListener에서는 사용에 제한이 있지만
Socket에서는 자유롭게 구현이 가능합니다.





댓글 없음:

댓글 쓰기