인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

편백나무님의 프로필 이미지
편백나무

작성한 질문수

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

PacketSession

PacketSession::OnRecv 함수 관련 질문드리고싶습니다ㅠㅠ..

작성

·

340

0

이 강의에서 아직 핸들링 안하신 걸 수 도 있지만,  패킷이 정말로 잘려서 온 경우 예를들면 패킷 헤더에 16사이즈가 16으로 기입이 되어있는데 소켓 IO에서 받아지게된 바이트수는 12로 받아진 상황이라고 가정 했을때,

if (dataSize/*12*/ < header.size/*16*/)

break;

브레이크 된 이후에는 Disconnet가 되어 버리는데요. 강의에서는 패킷이 다시 올때까지 기다렸다가. 패킷을 파싱 한다고 하셨는데, 실제 동작이랑 조금 다르게 동작하는 것 같습니다

따라서,

질문 : 향후에 핸들링이 바뀔 여지가 있을까요? 그게아니라면 원래 패킷이 잘려오면 디스커넥트가 정석적인 핸들링 방법인건지 궁금합니다!

-수정 : 제가 잘못 이해한 내용이니 궁금해서  들어오신분들은 강의 코드에는 문제가 없음을 알려드립니다 ^^;

답변 2

0

편백나무님의 프로필 이미지
편백나무
질문자

아하 감사합니다! 지금 디버깅 해봤는데 제가 잘못 이해했었습니다 정상적으로 동작하네요! 

0

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

그럴 경우 처리는 하지 않고 다음 패킷을 기다려서 합쳐서 처리해야 합니다.
만약에 Disconnect 처리를 한다면 버그가 있는 것이고 수정을 해주시면 됩니다.

강의 코드를 보면 processLen = 0일 경우 Disconnect를 시키진 않습니다.

편백나무님의 프로필 이미지
편백나무

작성한 질문수

질문하기