본문 바로가기

Game Server

[C++/게임서버] 소켓 프로그래밍 개념

결론 : 소켓은 전화기와 같다. 

 

이제 네트워크 프로그래밍의 기초다! 소켓이란 단어를 들어보면 처음에는 감도 안 올 것이다. 아니면 벽에 달려있는 플러그를 꽂기 위한 것이 생각날 것이다.

소켓

네트워크 프로그래밍이니 예시로 가자.


회사 건물 내에 외부 식당가가 있다고 가정해보자. 그리고 그 식당가는 한식, 일식, 중식 등등으로 이뤄져있다고 가정하자. 그럼 이 식당가는 직원을 고용할 것이다. 근데 고용을 했다면 이 식당가의 전화번호를 배정받을 것이다. 

 

자 이제 점심시간이 되서 우리 팀원은 이 식당에서 배달이나 예약을 것이다. 그럼 내 전화를 통해서 이 식당가에 대표 전화를 하면 이러한 과정을 해결할 수 있을 것이다. 

 

즉 식당가와 손님의 관점을 정리를 해보자. 먼저 식당가는 다음과 같은 과정을 거칠 것이다.

  1. 안내원 고용
  2. 안내원 교육 및 대표번호 지정
  3. 영업 시작
  4. 안내

그리고 식당측과 전화할 손님은 다음과 같은 과정을 거친다.

  1. 전화 준비
  2. 식당 번호로 문의

위에서 말한 저 과정을 좀 더 네트워크 프로그래밍적으로 표현하면 다음과 같다. 전화기는 소켓이 되고, 먼저 식당은 서버(또는 호스트)가 될 것이다.

  1. Listener 소켓 준비
  2. Bind(서버 주소/Port를 소켓에 연동)
  3. Listen
  4. Accept(클라이언트 받아들이기)

그리고 손님 즉 클라이언트는 다음과 같은 과정을 거친다.

  1. 소켓 준비
  2. 서버 주소로 Connect