인프런 커뮤니티 질문&답변

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Completion Port 모델

CreateIoCompletionPort 다음에 WSARecv를 하는 이유가 뭔가요?

해결된 질문

작성

·

433

1

바로 recv 해야한다라고 하고 부가 설명이 없는거같아서 여쭤봅니다.  2번째 CreateIoCompletionPort 이후 WSARecv를 해줘야 하는 이유가 있나요?

답변 1

1

Rookiss님의 프로필 이미지
Rookiss
지식공유자

해당 부분은 IOCP 네트워크 라이브러리를 만들 때
계속 나오는 부분이라 일단 간단하게 넘어가셔도 됩니다만, 살짝 스포를 드리자면.

실제로 상대방이 언제 데이터를 보내줄지 모르기 때문에,
데이터가 올 때 WSARecv를 하는게 아니라,
최초에 한 번 WSARecv를 해두는게 필수적이고
한참 후에 데이터가 오면 완료 통지가 뜨게 될겁니다.

저는 이를 이해하기 쉽게 낚시에 비유하곤 하는데요.
물고기를 낚기 위해서는 낚시대를 물에 던지고,
입질이 오면 당겨서 물고기를 떼어내고,
다시 낚시대를 물에 던져야 합니다.

WSARecv를 '걸어주는' 행동은 낚시대를 물에 던지는 것과 유사합니다.
물고기가 오는 그 시점에 맞춰서 낚시대를 던지는게 아니라,
일단 처음에 준비가 되면 무작정 낚시대를 던지고 기다리겠죠?
그 상황과 유사하다고 보시면 됩니다.

사과일광욕님의 프로필 이미지
사과일광욕

작성한 질문수

질문하기