inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Completion Port 모델

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

해결된 질문

507

사과일광욕

작성한 질문수 33

1

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

network windows-server MMORPG

답변 1

1

Rookiss

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

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

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

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

Memory Pool에서 오버플로우 질문입니다.

0

64

2

포토폴리오 및 진로 관련하여 고민입니다.

0

112

1

포토폴리오 관련 고민입니다.

0

62

1

실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.

0

82

2

성능 테스트 결과

0

103

2

게임 서버 Stateful, Stateless 진로 고민

0

121

1

WaitOnAddress와 Sleep의 차이 질문

0

83

1

궁금한거 있습니다.

0

82

2

JobTimer 구동 스레드

0

107

2

TryPop() 동작 관련 질문

0

81

1

로드맵 C#서버 C++서버 방향성 질문

0

148

2

스레드 id를 출력할떄 메인스레드 id도 출력되나요?

0

73

1

생명주기를 위한 의도적 복사

0

87

2

락프리의 실무에서 사용 질문

0

141

2

32bit threadID와 16비트 상위 WriteFlag에 대해

0

101

2

mutex와 sleep 차이점

0

118

1

실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다

0

152

2

Stomp Allocator의 Release함수에 대한 질문입니다.

0

96

1

공부법 관련해서

0

183

2

MakeShared 함수 관련

0

114

1

지금까지 서버코어에서 만든 내용에 대해 궁금한 점이 있어서 질문 드립니다.

0

144

2

운영체제관련 질문입니다

0

131

1

send하려는 데이터 크기가 크면 memcpy에서 문제가 발생할 것 같습니다.

0

117

2

메모리 풀 질문있습니다.

0

124

1