inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

Serialization #1

new Span<byte>에서 3번째 인자(length) 질문

141

명성

작성한 질문수 5

0

success &= BitConverter.TryWriteBytes(new Span<byte>(s.Array, s.Offset + size, s.Count - count)

이런 코드가 있는

s.Count - count가 아니라
그냥 type의 사이즈만큼 주면 안되는건가요? 우리가 필요한 부분은 딱 사이즈만큼 이라고 생각해서 그렇습니다!

s.Count - count 는 4094? 이런식으로 나오는
굳이 그만큼 받아와야 하는지 궁금합니다.

C# unity 네트워크

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

new Span<byte>(s.Array, s.Offset + size, s.Count - count) 코드의 세 번째 인자는 Span<byte>가 참조할 배열(s.Array)의 부분 범위의 길이를 지정합니다. 여기서 s.Count - count는 전체 배열 길이에서 특정 위치까지 처리된 부분을 제외한 나머지 부분의 길이를 의미하며, 이를 통해 처리해야 할 데이터의 정확한 범위를 지정합니다.

type의 사이즈만큼 주는 경우와 s.Count - count를 사용하는 경우의 차이는, 단순히 type의 사이즈만큼 데이터를 처리하는 것이 아니라, 동적으로 변하는 데이터의 양을 처리해야 할 때 s.Count - count 방식을 사용합니다. s.Count - count는 버퍼에서 아직 처리하지 않은 데이터의 크기를 동적으로 계산하여, 남아 있는 데이터를 정확히 처리할 수 있도록 합니다.

즉, 처리해야 할 데이터의 양이 고정된 경우가 아니라 변할 수 있을 때, s.Count - count를 사용하여 남아 있는 데이터의 양을 정확하게 지정하는 것입니다. 따라서, 정확한 처리를 위해 전체 길이(s.Count)에서 이미 처리한 길이(count)를 빼서 남은 데이터의 정확한 길이를 지정하는 것이 필요합니다.

이러한 방식은 특히 네트워크 프로그래밍이나 파일 입출력과 같이 데이터의 양이 동적으로 변할 수 있는 상황에서 유용하게 사용됩니다. 미리 정해진 type의 사이즈만큼 데이터를 처리하는 것과는 다르게, 실제 처리해야 할 데이터의 양을 보다 유연하게 지정할 수 있습니다.

TLS 질문드립니다.

0

44

2

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

0

48

2

Unity Span

0

76

2

XML, Dll 차이점

0

106

2

Session 질문입니다

0

80

1

Write Read 커서 키워드

0

76

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

71

2

네트워크 Send 전담 스레드 배치

0

98

2

UnhandledException 으로 서버 터지는 경우

0

86

2

컨텐츠 단, 엔진 단

0

106

1

질문 있습니다

0

77

2

C# 게임서버 3D MMORPG

0

147

2

유니티6 버전

0

98

2

receive하는 부분과 send하는 부분의 차이

0

134

2

커서의 위치의 중요성

0

103

2

C++ 전혀 모르는데 C# 서버

0

170

2

강의에 질문이 있습니다

0

86

2

멀티스레드 이해도 질문

0

95

1

500 vs 500

0

130

3

OnAcceptHandler 액션 함수

0

61

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

193

2

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

0

83

2

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

0

106

1

스핀락 질문.

0

110

2