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

조영웅님의 프로필 이미지
조영웅

작성한 질문수

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

채팅 테스트 #2

_socket 이 비었습니다.

작성

·

494

1

채팅 테스트#2 부분에서 좀 다른 부분이 있습니다(17분쯤). 더미클라에서 10개를 만들었을때는 문제없이 잘 작동했는데 100개로 변경했을때 다음과 같이 null오류가 뜹니다.

처음에는 이렇게 null이 뜨다가 조금 지나면

위 사진 처럼 정상적으로 작동 합니다. GameRoom에 Broadcast의 lock 부분에 breakPoint를 잡고 돌리면

위 사진처럼 Send부분에 _socket이 null이 라고 뜹니다. 어디선가 Disconnet를 했다는걸까요? 아직 진도를 따라가기도 벅찬 실력이라서 ㅜ 어떻게 문제를 찾아야 할 지 모르겠습니다.

답변 5

1

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

sessionFactory 쪽이랑은 딱히 상관 없을 것 같고
왜 _socket이 null인지가 관건입니다.

이 부분에서 정말 Start에 null이 들어왔다는
얘기가 되는데 정말 그런지 디버깅을 해봐야 합니다.
공부 방법은 개인차가 있기 때문에 자신에게 맞게 하면 되고
느리더라도 맞는 방향으로만 가면 됩니다.
서버쪽은 원래 어려운게 맞고 강의당 3시간 걸려도 정상 범위라고 봅니다.
저도 헤딩할 때는 동일한 책을 5번씩 보고 그랬습니다.

0

해당 부분은 Session이 Connect  되어 _socket이 초기화 되기 전에 Main 루프에서 Send가 요청되면서 생긴 이슈로 보입니다.

_socket 이 null 인지 검사해서 return 하면 sendQueue에 보내려고 하는 내용은 그대로 보관하고 있기 때문에 다음 번에 잘 보내질 것으로 보입니다.

덕분에 원인도 알고 해결도 했습니다! 완전 감사합니다!!ㅠㅠ

0

조영웅님의 프로필 이미지
조영웅
질문자

_sessionFactory = sessionFactory인데 _sessionFactory += sessionFactory 라고 해놨네요.. 

왜 += 하면 Null 크래시가 나는지는 곰곰히 생각해도 이해를 못 하겠습니다. 공부를 할 때 이럴경우 이해를 하고 넘어 가는게 좋을까요 ?

또 공부를 할 때 제가 좀 꼼꼼히 필기를 하면서 이해를 하면 다음 강의로 넘어가는 식으로 공부하고 있는데, 한 강의를 필기하고 이해하면 3~4시간씩 걸려서 진도를 정말 천천히 나가고 있습니다. 좀 저의 공부법에 의문이 계속 들어서 어떻게 생각 하시나요 ?

0

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

위 부분에서 null인 경우를 일단 잡아보시기 바랍니다.

0

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

null 크래시는 가장 잡기 쉬운 유형입니다.
어디선가 Disconnect 했다면 NetworkException이 일어나지 Null 크래시가 일어나진 않습니다.
_socket이 왜 null인지를 분석해야 하는데
강의 내용과 코드를 똑같이 작업하신 것이 맞을까요?

조영웅님의 프로필 이미지
조영웅

작성한 질문수

질문하기