segmeng 범위 지정시에 질문
523
작성한 질문수 17
안녕하세요, RecvBuffer 강의중에서
//읽을 수 있는 유효한 데이터의 범위
public ArraySegment<byte> ReadSegment
{
get { return new ArraySegment<byte>(_buffer.Array, _buffer.Offset + _readPos, DataSize);}
}
//사용가능한, 비어있는 범위
public ArraySegment<byte> WriteSegment
{
get { return new ArraySegment<byte>(_buffer.Array, _buffer.Offset + _writePos, FreeSize); }
}위와 같이 segment 프로퍼티를 설정하였는데, 중간 인자로 그냥 readPos를 넣지 않고 buffer.Offset + readPos 로 계산한 이유를 모르겠습니다.
현재 저의 생각으로는 buffer.Offset은 결국 언제나 0이지 않나? 입니다. 코드를 보았을 때 offset을 조작하거나 건드리는 코드는 아직 현재강의(RecvBuffer)까지는 없고, 나중에라도 _readPos와 DataSize가 결국 segment범위를 바꿔주니 이 offset을 건들일 필요는 없다고 생각이 드는 상태입니다.
또한, 만약 offset을 변경시키는 경우가 있더라도 offset+readpos 하면 offset이 0이 아닌경우 readpos에 맞지않는곳이 시작위치가 될텐데 왜 offset을 더하는건지 이해가 되지 않습니다.
따라서 offset을 더한 이유가 궁금합니다!
답변 3
0
감사합니다. 근데 지금 현재까지(SendBuffer 강의)는 offset이 전부 0인경우로 라고 생각이드는데, 나중에 offset이 달라지는 경우가 나오는것인가요?
0
경우에 따라 아주 큰 버퍼를 분할해서 나눠 쓰는 경우가 생길 수 있는데
그러면 Offset이 달라질 수 있습니다.
C#은 C++과 다르게 포인터를 직접 사용하지 않으니
이런식으로 base 주소 + offset으로 관리하는 것이죠.
TLS 질문드립니다.
0
43
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
46
2
Unity Span
0
75
2
XML, Dll 차이점
0
105
2
Session 질문입니다
0
79
1
Write Read 커서 키워드
0
76
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
70
2
네트워크 Send 전담 스레드 배치
0
98
2
UnhandledException 으로 서버 터지는 경우
0
85
2
컨텐츠 단, 엔진 단
0
104
1
질문 있습니다
0
77
2
C# 게임서버 3D MMORPG
0
145
2
유니티6 버전
0
97
2
receive하는 부분과 send하는 부분의 차이
0
134
2
커서의 위치의 중요성
0
103
2
C++ 전혀 모르는데 C# 서버
0
169
2
강의에 질문이 있습니다
0
86
2
멀티스레드 이해도 질문
0
95
1
500 vs 500
0
130
3
OnAcceptHandler 액션 함수
0
61
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
190
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
82
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
105
1
스핀락 질문.
0
110
2






