inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Client 쪽에서 접속 확인

319

keti-maas

작성한 질문수 5

0

Client 쪽에서 아래와 같이 Connect 후 바로 접속 상태를 확인하려고 합니다.

SessionManager에서 Session을 가져와 Session Socket의 bool형 변수 IsConnected 값을

return 해주는 방식으로 IsConnected() 함수를 구현해놨고

위 처럼 Client에서 Connect 후 바로 호출하니 SessionManager에 포함된 List에 추가되기 전이라

false가 return 되고 있어 약간의 Sleep을 걸어주어 해결했습니다만, 아마도 ConnectAsync 비동기 접속이다보니

실제 눈으로 보기엔 서버가 켜져있을 시 바로 접속 되는 것처럼 보이지만 프로그램 처리 과정에선 Connect() 함수 호출 후 

바로 IsConnected()로 바로 넘어가니 그 간격이 생겨 그런거 같은데 맞나요?

그리고 실제 게임이나 여타 TCP Client에서 접속 확인을 할때도 저처럼 Sleep을 줘서 처리하나요?

network unity C#

답변 1

0

Rookiss

Connect 하자마자 바로 연결이 되는게 아니므로
저 위치에서 하면 안 되고
Session이 만들어져서 OnConnected가 호출될 때 해주면 됩니다.

Sleep은 당연히 넣지 않습니다.
강의에서 초반에 Sleep 넣은 것은 간단하게 테스트 하려고 한 것이고
원래라면 굳이 기다릴 필요는 없습니다.

0

keti-maas

항상 답변 감사드립니다. 

0

Rookiss

아 다만 유니티 특성상 한 가지 문제가 있는데,
OnConnected는 Main 쓰레드에서 호출되지 않기 때문에
바로 OnConnected 시점에서 당장 뭘 하면 에러가 날 수 있습니다.
우리가 일반 패킷을 바로 처리 하지 않고 queue에다 넣었다가
MainThread에서 꺼내 쓴 것과 유사하게 처리를 해주거나,
별도의 Connected 패킷을 파서 패킷 Handler에서 처리를 해주거나,
그마저도 귀찮다면 Sleep이나 코루틴 WaitForSeconds을 하는 것도 임시 땜빵 방법입니다.

TLS 질문드립니다.

0

35

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

39

2

Unity Span

0

66

2

XML, Dll 차이점

0

99

2

Session 질문입니다

0

74

1

Write Read 커서 키워드

0

69

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

65

2

네트워크 Send 전담 스레드 배치

0

94

2

UnhandledException 으로 서버 터지는 경우

0

82

2

컨텐츠 단, 엔진 단

0

100

1

질문 있습니다

0

73

2

C# 게임서버 3D MMORPG

0

141

2

유니티6 버전

0

94

2

receive하는 부분과 send하는 부분의 차이

0

128

2

커서의 위치의 중요성

0

99

2

C++ 전혀 모르는데 C# 서버

0

164

2

강의에 질문이 있습니다

0

83

2

멀티스레드 이해도 질문

0

90

1

500 vs 500

0

122

3

OnAcceptHandler 액션 함수

0

57

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

185

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

78

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

100

1

스핀락 질문.

0

104

2