• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

패킷을 조립하는 부분에서 제가 생각하는게 맞는지 잘 모르겠습니다. ㅜㅜ

21.11.05 00:48 작성 조회수 184

2

친애하는 루키스님~
 
바쁘신 와중에 매번 질문글을 올리게 되어 죄송합니다. ㅜㅜ
 
루키스님이 아주 친절하게 설명을 해주심에도
 
제가 제대로 이해를 하는 건가해서
 
이렇게 송구스럽게 글을 올리게 되었습니다.
 
클라에서 서버로 패킷을 보내게 되면 아래와 같은 과정을 거친다고 현재 생각을 하고 있는데요.
 
이 생각이 맞는 걸가요?
 
1. 클라에서 서버로 패킷이 날아온다.
2. 해당 클라에 대응하는 Session의 _recvBuffer에 차곡 차곡 쌓인다.
3. 패킷이 완전체([size(2)][packetId(2)][ ... ])가 될 때까지 일단 스킵을 한다.
4. 패킷이 완전체가 확인되면 OnRecvPacket()로 전달하고 전달한 패킷을 뺀 나머지 부분을 다시 찝어준다.
5. 이후 패킷이 완전체가 될 때까지 일단 스킵을 한다.
6. 패킷이 완전체가 확인되면 OnRecvPacket()로 전달하고 전달한 패킷을 뺀 나머지 부분을 다시 찝어준다
......(반복)........
 
이렇게 이해하고 있는게 맞는 걸까요?ㅜ
 
끊이지 않는 질문으로 괴롭혀서 죄송합니다...
 
루키스님 강의가 재밌어지는 만큼
 
궁금한 점도 쏙쏙 생겨나서 큰일입니다....

답변 1

답변을 작성해보세요.

1

네 잘 이해하셨습니다.
동일한 recvBuffer는 맞지만,
C# 특성상 C++처럼 자유롭게 포인터를 이용해 참조하지 못하므로
버퍼 시작 위치 (Array) + Offset + DataSize 삼총사로 범위를 지정하는 것입니다.

ChaYong님의 프로필

ChaYong

질문자

2021.11.05

정말 정말 감사합니다.^^

루키스님의 강의들을 반복해서 들으면 들을 수록 쏙 쏙 귀에 들어오는 것 같습니다.

멋진 커리큘럼을 만들어주셔서 다시 한 번 감사드립니다^^

좋은 밤되세요~^^

아닙니다.
오히려 난이도가 엄청 어려운 강의이고,
저도 꾸준히 몇 년에 걸쳐서 연구한 것인데
이렇게 따라오신 것에 경의를 표합니다.