inflearn logo
강의

Course

Instructor

[C# and Unity MMORPG Game Development Series] Part 4: Game Server

SendBuffer

segmeng 범위 지정시에 질문

523

jiw720

17 asked

0

안녕하세요, 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을 더한 이유가 궁금합니다!

 

 

 

 

 

 

 

C# unity 네트워크

Answer 3

0

jiw720

감사합니다. 근데 지금 현재까지(SendBuffer 강의)는 offset이 전부 0인경우로 라고 생각이드는데, 나중에 offset이 달라지는 경우가 나오는것인가요?

0

jiw720

저는 그 offset의 역할을 _readPos가 이미 해주고있다고 느껴지는데, 어떻게 구분해야 이해를 할 수 있는것인가요?

0

Rookiss

image

0

Rookiss

경우에 따라 아주 큰 버퍼를 분할해서 나눠 쓰는 경우가 생길 수 있는데
그러면 Offset이 달라질 수 있습니다.

C#은 C++과 다르게 포인터를 직접 사용하지 않으니
이런식으로 base 주소 + offset으로 관리하는 것이죠.

TLS 질문드립니다.

0

43

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

46

2

Unity Span

0

76

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

105

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

191

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

82

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

106

1

스핀락 질문.

0

110

2