inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

IocpCore

CreateIoCompletionPort 사용 문의

521

이영호

작성한 질문수 10

0

좋은 강의 감사합니다.

이전 Completion Port 강의와 비교하며 이해하는 과정에서 물음의 생겨 질문드리게 되었습니다.

Listener내 StartAccept에서 CP 등록을 하는 부분에서 물음이 있습니다.


이전에는 listenSocket을 accept한 결과 값인 clientSocket을 CP에 등록한 반면,

현재는 listenSocket 자체가 CP에 등록되는데, 이러한 차이가 발생한 이유를 알수있을까요 ?

현재 코드에서 AcceptEx 동작이후 session->GetSocket() 에 대해 CP에 등록을 하지 않은 이유는 무엇인가요 ??


[이전 Completion Port 강의]
1. listen Socket 생성 , bind(), listen()
2. accept()
SOCKET clientSocket = ::accept(listenSocket, (SOCKADDR*)&clientAddr, &addrLen);
3. 소켓을 CP 등록
::CreateIoCompletionPort(clientSocket , ~ ~)

[현재 강의]
1. listen Socket 생성
2. listenSocke을 CP 등록
::CreateIoCompletionPort(listenSocket , ~ ~)
3. bind(), listen()
4. clientSocket 생성 (session() 생성자)
5. AcceptEx(_listenSocket, session->GetSocket() , ~~)

network windows-server MMORPG

답변 1

0

Rookiss

accept는 리턴 결과로 소켓을 뱉지만,
비동기 버전 AcceptEx에선 이미 만들어진 소켓을 등록하고 있기 때문에
(애당초 AcceptEx가 바로 리턴해서 결과를 받는 구조가 아니죠) 방식이 다른 것이고,
함수의 사용은 MSDN을 참고해서 문서를 읽어보는게 중요합니다.
사실 '원리'라기보다는 그냥 MS에서 그렇게 만든거라 너무 깊게 파긴 힘드니 감안은 하셔야 합니다.

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

0

64

2

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

0

114

1

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

0

63

1

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

0

82

2

성능 테스트 결과

0

103

2

게임 서버 Stateful, Stateless 진로 고민

0

122

1

WaitOnAddress와 Sleep의 차이 질문

0

83

1

궁금한거 있습니다.

0

82

2

JobTimer 구동 스레드

0

107

2

TryPop() 동작 관련 질문

0

81

1

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

0

150

2

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

0

73

1

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

0

87

2

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

0

142

2

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

0

101

2

mutex와 sleep 차이점

0

118

1

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

0

153

2

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

0

96

1

공부법 관련해서

0

184

2

MakeShared 함수 관련

0

114

1

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

0

144

2

운영체제관련 질문입니다

0

131

1

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

0

118

2

메모리 풀 질문있습니다.

0

125

1