본문 바로가기

Dev Story/C#

소켓의 개념정리 짤막하게!

소켓을 검색 해보면 프로세스간 의 통신을 하기 위한 네트워크의 종착점이라고 설명을 한다.

220볼트 전기 전선을 사용하기 위해 멀티 어댑터 로 서로 연결 할때 그 돼지 코처럼 생긴

부분에 연결 하게 되면 A라는 지점에서 B라는 지점까지 서로 전기의 목적지가 어디인지 

알게 되고 서로 전기를 흘러 보낼수 있기 때문에 기계를 사용 할  수 있다

 

 

 

 

이와 같이 소켓이라는 부분은 네트워크 적으로 서로 연결 시키기 위한

멀티 어댑터 같은 역할을 한다.

 

위의 그림은 소켓 통신이 이루어질 때 순서대로 나열 한 것으로

서버영역과, 클라이언트 영역 두 가지 영역이다. 예를 들어 A 라는 컴퓨터와 라는 

컴퓨터가 서로 대화를 나눌 때 한쪽에서는 서버영역처럼 순서대로 절차를 진행하고

 

다른 쪽에서는 클라이언트 영역처럼 위에서 아래처럼 순서대로 절차를 진행 한 후

데이터 송수신 부분에서 서로 하고자 하는 말을 서로 주고 받으면 됩니다.

 

구성 방식에 따라 1:1 과 1:N 을 구성 할 수 있는데 서버는 이고 클라이언트는 1이 될수도 있고 

N(다수) 가 될 수 있습니다.

 

네트워크(인터넷) 가 연결된 상태에서 컴퓨터가 서로 대화를 하기 위해선 소켓을 이용해

EndPoint (IP,Port 조합) 를 설정 하는데 데이터 수신의 목적지 라고 보시면 됩니다. 

 

데이터를 보내는 출발지로부터 목적지 까지 데이터를 전송하게 되면 수신 받은 PC 프로그램은 받은 

데이터를 처리해 UI에 표출 할 수 있습니다. 

 

Port 구분을 하고 있어서 같은 IP에 데이터를 수신 받더라도 다른 포트를 설정 함으로써 

각 프로세스에서 데이터를 수신 할 수 있습니다. 

이러한 이유로 한 IP에는 같은 Port 번호를 사용 할 수 없습니다.

 

[Sever]

Socket(): 소켓을 생성 하는데 이용됩니다.

Bind() : IP와 Port 번호를 설정 합니다.

Listen(): 클라이언트의 접근 요청에 수신 대기열 을 만들어 몇 개의 클라이언트를 대기 시킬지 결정 합니다.

Accept(): 클라이언트와의 연결을 기다립니다.

Read&Write(): 데이터 송수신시 읽기/쓰기를 합니다.

Close(): 연결된 소켓 객체를 닫습니다.

 

[Client]

Socket(): 소켓을 생성하는데 이용됩니다.

Connect(): 통신 할 서버의 설정된 IP와 Port번호에 통신을 시도합니다.

Read&Write(): 데이터 송수신시 읽기/쓰기를 합니다.

Close(): 연결된 소켓 객체를 닫습니다.