CreateIoCompletionPort 다음에 WSARecv를 하는 이유가 뭔가요?
바로 recv 해야한다라고 하고 부가 설명이 없는거같아서 여쭤봅니다. 2번째 CreateIoCompletionPort 이후 WSARecv를 해줘야 하는 이유가 있나요?
답변 1
1
해당 부분은 IOCP 네트워크 라이브러리를 만들 때
계속 나오는 부분이라 일단 간단하게 넘어가셔도 됩니다만, 살짝 스포를 드리자면.
실제로 상대방이 언제 데이터를 보내줄지 모르기 때문에,
데이터가 올 때 WSARecv를 하는게 아니라,
최초에 한 번 WSARecv를 해두는게 필수적이고
한참 후에 데이터가 오면 완료 통지가 뜨게 될겁니다.
저는 이를 이해하기 쉽게 낚시에 비유하곤 하는데요.
물고기를 낚기 위해서는 낚시대를 물에 던지고,
입질이 오면 당겨서 물고기를 떼어내고,
다시 낚시대를 물에 던져야 합니다.
WSARecv를 '걸어주는' 행동은 낚시대를 물에 던지는 것과 유사합니다.
물고기가 오는 그 시점에 맞춰서 낚시대를 던지는게 아니라,
일단 처음에 준비가 되면 무작정 낚시대를 던지고 기다리겠죠?
그 상황과 유사하다고 보시면 됩니다.
CS 기초 지식이 필요없는 세상이 오지 않을까요?
0
27
2
DeadLock 탐지에서 재귀 Lock 상황에 대해 궁금합니다.
0
46
2
LockFreeStack #2에서 ABA 문제
0
50
1
RefCounting 강의 질문있습니다.
0
70
2
writeLock을 잡을때 꼭 empty 상태여야하는 이유?
0
94
2
Memory Pool에서 오버플로우 질문입니다.
0
112
2
포토폴리오 및 진로 관련하여 고민입니다.
0
209
1
포토폴리오 관련 고민입니다.
0
117
1
실무에서도 alloc, 스마트포인터 등을 구현해서 쓰는지 궁금합니다.
0
126
2
성능 테스트 결과
0
129
2
게임 서버 Stateful, Stateless 진로 고민
0
167
1
WaitOnAddress와 Sleep의 차이 질문
0
120
1
궁금한거 있습니다.
0
105
2
JobTimer 구동 스레드
0
135
2
TryPop() 동작 관련 질문
0
99
1
로드맵 C#서버 C++서버 방향성 질문
0
189
2
스레드 id를 출력할떄 메인스레드 id도 출력되나요?
0
94
1
생명주기를 위한 의도적 복사
0
112
2
락프리의 실무에서 사용 질문
0
175
2
32bit threadID와 16비트 상위 WriteFlag에 대해
0
123
2
mutex와 sleep 차이점
0
148
1
실무에서는 어떠한 코드 스타일을 사용하는지 궁금합니다
0
182
2
Stomp Allocator의 Release함수에 대한 질문입니다.
0
115
1
공부법 관련해서
0
202
2





