결론 : 소켓은 전화기와 같다.
이제 네트워크 프로그래밍의 기초다! 소켓이란 단어를 들어보면 처음에는 감도 안 올 것이다. 아니면 벽에 달려있는 플러그를 꽂기 위한 것이 생각날 것이다.
네트워크 프로그래밍이니 예시로 가자.
회사 건물 내에 외부 식당가가 있다고 가정해보자. 그리고 그 식당가는 한식, 일식, 중식 등등으로 이뤄져있다고 가정하자. 그럼 이 식당가는 직원을 고용할 것이다. 근데 고용을 했다면 이 식당가의 전화번호를 배정받을 것이다.
자 이제 점심시간이 되서 우리 팀원은 이 식당에서 배달이나 예약을 것이다. 그럼 내 전화를 통해서 이 식당가에 대표 전화를 하면 이러한 과정을 해결할 수 있을 것이다.
즉 식당가와 손님의 관점을 정리를 해보자. 먼저 식당가는 다음과 같은 과정을 거칠 것이다.
- 안내원 고용
- 안내원 교육 및 대표번호 지정
- 영업 시작
- 안내
그리고 식당측과 전화할 손님은 다음과 같은 과정을 거친다.
- 전화 준비
- 식당 번호로 문의
위에서 말한 저 과정을 좀 더 네트워크 프로그래밍적으로 표현하면 다음과 같다. 전화기는 소켓이 되고, 먼저 식당은 서버(또는 호스트)가 될 것이다.
- Listener 소켓 준비
- Bind(서버 주소/Port를 소켓에 연동)
- Listen
- Accept(클라이언트 받아들이기)
그리고 손님 즉 클라이언트는 다음과 같은 과정을 거친다.
- 소켓 준비
- 서버 주소로 Connect
'Game Server' 카테고리의 다른 글
[C++/게임서버] 논블로킹 소켓 (0) | 2022.09.28 |
---|---|
[C++/게임서버] TCP VS UDP (0) | 2022.09.28 |
[게임서버/C++] STL Memory Allocation (0) | 2022.08.23 |
[게임서버/C++] Stomp Allocation (0) | 2022.08.22 |
[게임서버/C++] Base Memory Allocating (0) | 2022.08.22 |