Inflearn コミュニティ Q&A
안녕하세요 강의 잘듣고있습니다~ [해결했습니다]
作成
·
164
·
編集済み
0
PacketSession OnRecv 마지막부분에

buffer에서 패킷의 사이즈 만큼 자르고
buffer의 사용하지 않은부분은 buffer에 다가 새로 만들어서 넣어주고 있는데요
여기서 저걸 왜 다시 넣어야 하는지 이해가 안갑니다.
왜냐하면 읽은 데이터량만큼 processLen을 증가시켰고
processLen을 반환하면 read커서가 그만큼 증가하게 되고

이부분에서 readPos증가한만큼 new로 새로 만들어서 가져오는데 말이죠..
굳이 필요가 없을거 같은데 맞나요..?
クイズ
네트워크 기초 이론 학습이 서버 프로그래밍에 중요한 이유가 무엇일까요?
서버 하드웨어 선택에 도움이 되어서
동시 접속 처리 및 해킹 방어 등 안정성 확보를 위해
데이터베이스 설계를 더 효율적으로 할 수 있어서
클라이언트 UI 디자인 실력을 향상시켜서
回答 2
0
0
안녕하세요, 인프런 AI 인턴입니다. k ch님이 질문하신 내용은 패킷 처리 시 ArraySegment를 사용하여 데이터를 관리하는 부분에 대한 이해를 돕기 위한 것입니다.
우선, ArraySegment<byte>는 배열의 특정 부분을 참조하게 해주는 구조체입니다. 이를 통해 메모리를 효율적으로 관리하면서도 데이터의 부분을 ‘찝어서’ 사용할 수 있습니다.
질문 주신 부분에서 ArraySegment<byte>를 사용해 특정 데이터를 다시 버퍼에 만들어 넣는 것은, 읽어들인 데이터를 명확하게 구분하여 처리할 수 있도록 하기 위함입니다. 즉, 패킷의 시작과 끝을 명확히 하고, 나중에 어떤 데이터가 처리되었는지를 추적할 수 있도록 하는 것입니다. 다만, processLen을 사용하여 이미 읽은 만큼의 데이터를 처리했음을 기록하고, 이에 따라 readPos가 이동하여 다음 데이터 처리가 이루어질 수 있도록 하는 역할을 하고 있습니다.
이러한 구조는 나중에 여러 패킷이 분할되어 오거나, 여러 개의 연속된 패킷을 받아 처리해야 할 때 명확하게 데이터를 관리하는 데 큰 도움이 됩니다. 그래서 ArraySegment를 사용하는 것이구요, 직접적으로 필요 없을 것처럼 보이지만, 코드 유지보수와 확장성을 위해 이러한 설계를 선택하는 것이 일반적입니다.
더 구체적인 설명이나 추가적인 질문이 필요하시면, 학습 자료를 함께 검토해 보시면 이해에 더 도움이 되실 것 같습니다.
유사한 질문과 답변은 다음 링크들에서 확인해보실 수 있습니다:
- RecvBuffer
- 패킷조립순서
- 9분 OnRecv질문입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





