inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Session #3

Connect 함수에 대해 질문이 있습니다.

해결된 질문

351

Kang Teahyen

작성한 질문수 5

0

안녕하세요 영상 4분쯤에 나오는 RegisterConnect 에 대해 질문이 생겨서 남겨봅니다.

 

먼저 제가 이해한 바를 정리해 보면

클라이언트 -> 서버 연결의 경우에는,

DummyClient 입장에서 서버에 붙어야 하기에 RegisterConnect를 호출해 주었고

Server입장에서는 Listener에서 ProcessConnect를 바로 호출해 준다고 이해했습니다.

 

이전에 서버 -> 서버간의 연결이 분산 서버 환경에서 일어날 수 있다고 말씀주셨고 영상 4분쯤(RegisterConnect 함수 제작 중)에 서버와 서버를 연결할 경우, 상대방이 나한태 붙는 개념이라, ServiceType이 Client 인 경우에만 RegisterConnect 를 호출할 수 있다 설명해 주셨는데 이 부분이 잘 이해가 가지 않습니다.

 

만약 서버 -> 서버의 연결의 필요해 지는 경우에는,

서버입장에서 ClientService 를 생성해서 대상 서버에 RegisterConnect를 호출해야 하는 건가요?

아니면 따로 추가 함수 제작이 필요한 건가요?

 

==========================

 

죄송합니다 추가로 질문 하나 더 남겨봅니다.

 

저희가 사용하고 있는 IocpEvent는 OVERLAPPED를 상속받아

 

메모리 처음 시작 부분에 OVERLAPPED 구조체 정보가 들어있어서 IocpEvent <-> OVERLAPPED 간의 타입캐스팅이 가능했었는데,

 

이런 방식의 기믹은 뭐라고 하며, virtual 함수가 없는 이상 언제나 안전하게 사용할 수 있는 방법인가요?

 

https://stackoverflow.com/questions/22404423/c-pod-struct-inheritance-are-there-any-guarantees-about-the-memory-layout-of

 

관련 내용을 찾다보니 메모리 레이아웃이 보장되지 않는다는 내용이 보여서 여쭤봅니다.

MMORPG windows-server network

답변 1

2

Rookiss

서버입장에서 ClientService 를 생성해서 대상 서버에 RegisterConnect를 호출해야 하는 건가요?

네 그렇습니다. 서버끼리 통신하더라도 그 중 하나는 클라의 역할을 하게 되겠죠.

메모리 처음 시작 부분에 OVERLAPPED 구조체 정보가 들어있어서 IocpEvent <-> OVERLAPPED 간의 타입캐스팅이 가능했었는데,

제 환경에선 문제가 없었지만
테스트한 환경에서 문제가 된다면
더 직관적인 대안은
상속구조를 하지 않고 모든 애들을 커버하는 struct를 만든 뒤,
Overlapped 멤버변수를 넘기는겁니다.

ex)

struct OverlappedEx
{
 ... 이벤트 종류 구분 등등
 Overlapped overlapped;
}

0

Kang Teahyen

답변 감사합니다!

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

0

63

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

86

2

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

0

139

2

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

0

101

2

mutex와 sleep 차이점

0

117

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