강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

starkshn님의 프로필 이미지
starkshn

작성한 질문수

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

채팅 테스트 #2

Handler 질문 + 11분 질문

작성

·

300

0

 강사님이 13분 쯤에 실행 하는 부분에서 똑같이 cmd창에

 

 

10명이 입장은되는데 클라에서 보낸 메세지를 서버가 받아서 BroadCast하는 부분이 계속 호출이 안되었었습니다.

 

거의 3시간동안 뭐가 문제지?? 하다가 찾은 부분이

 

Server > PacketHandler부분에서

C_chatHandler부분이

 

 

이렇게  

ClientSession clientSession = new ClientSession(); 되어 있어서 

if문에 걸려서 그냥 return 을 해버린거 같은데

 

인자에 받은 session을 new ClientSession()으로 하게되면 

 

새로 "빈" 갓난아기의?? ClientSession을 다시 만들어 버리기때문에

 

ClientSession의 Room이 항상 비어있는 상태라 

retrun 으로 끝내버리게 되어서

 

ServerSessionManager의 Register하는 부분에서

 

_onRecv를 한다음

 

어떤 행동을 할것인가 == _handler 부분에서 매핑해놓은

C_chatHandler가 호출 되기는 하지만

 

new ClientSession 때문에 if에 걸려서 바로 return 을 하게 되어서 클라에 뿌려줄 수가 없었다....

 

그래서 new ClientSession을 하면 안되고

 

 

여기서 이어서 받이온 session을 ClientSession으로 캐스팅을 하고 

 

(안에 정보가 있으니까)

 

이어서 사용을 해야한다. 라고 이해를 했는데 어느정도 맞는 흐름일까요..??

퀴즈

다수 클라이언트의 동시 요청을 서버에서 즉시 처리할 때 주로 발생하는 문제점은 무엇일까요?

패킷 순서가 뒤바뀔 수 있습니다.

멀티스레딩 충돌 및 병목 현상이 발생할 수 있습니다.

클라이언트의 응답 속도가 느려집니다.

서버 메모리 사용량이 급증합니다.

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 물론입니다. 
new ClientSession으로 강제로 새로 만들어주면
애써서 세팅해준 데이터가 다 날라가겠죠.

starkshn님의 프로필 이미지
starkshn

작성한 질문수

질문하기