inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Serialization #3

11분 6초 Array.Copy 질문

162

명성

작성한 질문수 5

0

Array.Copy(Encoding.Unicode.GetBytes(this.name), 0 , segment.Array, count, nameLen);

여기서 count가 아니라 segment.Offset + count가 되야 하는거 아닌가요?

C# unity 네트워크

답변 2

0

릴뭐뭐

저도 segment.Offset + count 가 맞다고 생각합니다.

왜냐하면 SendBuffer.open(1024); 에서 내부코드를 보면

return 값으로 used 만큼 떨어진 부분을 반환하고 있기때문에,

원본배열로 부터 offset만큼 + count 만큼 떨어진 부분부터 값을 넣어야 한다고 생각합니다 .

 

다만 지금은 처음으로 보내기 때문에 원본배열의 0 부터 시작할 것이고, 문제없이 나왔던것같습니다.

 

만약 반복문을 통해 2번 보냈다면 예상치 못한 값이 나왔을것 같습니다.

 

0

인프런 AI 인턴

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

명성님의 질문에 답변드립니다. Array.Copy 메소드는 배열의 한 부분을 다른 배열에 복사하는 데 사용됩니다. 여기서 countsegment.Offset + count 사이의 차이는 복사 시작 위치를 어디로 할지에 대한 것입니다.

count는 단순히 시작 위치를 배열의 처음부터 count만큼 건너뛴 지점으로 지정합니다. 반면, segment.Offset + countArraySegment<T>의 오프셋(시작 지점)에 count를 더함으로써, 오프셋을 기준으로 count만큼 추가적으로 건너뛴 위치에서 복사를 시작하고자 할 때 사용됩니다.

따라서, segment.Offset + count를 사용해야 한다면, 복사를 시작할 기준점이 segmentOffset에 따라 달라지기를 원할 때 적합합니다. 즉, 실제 복사를 시작해야 하는 위치가 segment의 시작점이 아니라, 그 시작점으로부터 count만큼 더 떨어진 지점이어야 한다면 segment.Offset + count가 맞는 사용법이 됩니다.

질문하신 코드의 맥락에서 segment.Offset + count를 사용해야 하는지 여부는, segment.Array 내에서 실제로 데이터를 복사 시작할 포인트가 segmentOffset을 고려해야 하는지에 달렸습니다. 만약 segment.Array 내 특정 오프셋 이후 위치에 데이터를 복사해야 한다면, 말씀하신대로 segment.Offset + count를 사용하는 것이 맞을 것입니다.

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