inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

SendBuffer

안에 있다는 말이 엔진단 안에 있다는 말씀이신가요?

583

baljang

작성한 질문수 35

0

recvBuffer는 안에 있어서 Session마다 고유한 recvBuffer를 갖고 있다고 하실 때 안에 있다는 말은 ServerCore안 즉 엔진단 안에 있다는 말씀이신가요?

설명하실 때 안에 있다 언급하실 떄 마다 엔진단 안이라고 이해하고 있었는데 맞게 이해하고 있는 건가요?

C# unity 네트워크

답변 1

1

Rookiss

Session마다 고유하게 자신의 RecvBuffer를 갖고 있다는 의미입니다.
반면 SendBuffer는 모두가 공유해서 사용하는 공공 물품이고요.

0

baljang

SendBuffer: Server 컨텐츠 단에서 생성되는 SendBuffer는 공용으로 사용됩니다. 왜냐하면, GameSession 클래스 내의 OnConnected 메서드에서 SendBufferHelper를 사용하여 SendBuffer를 생성하고 있습니다. SendBufferHelper는 모든 세션에서 공유되는 공용 리소스이기 때문에 생성된 SendBuffer도 공용으로 취급됩니다. 이렇게 공용으로 사용되는 SendBuffer를 통해 서버는 각 세션에 동일한 데이터를 보낼 수 있습니다.

RecvBuffer: RecvBuffer 클래스의 생성자에서 _buffer는 각 세션마다 고유한 데이터를 가지게 됩니다. 이유는, RecvBuffer 클래스의 인스턴스가 세션마다 생성되기 때문입니다. 클래스에서 _buffer는 새로운 인스턴스가 생성될 때마다 독립적으로 초기화되므로, 각 세션의 RecvBuffer 인스턴스는 고유한 _buffer를 갖게 됩니다. 이렇게 각 세션마다 고유한 RecvBuffer를 통해 서버는 각 클라이언트로부터 데이터를 독립적으로 수신할 수 있습니다.

Chat GPT에게 부연설명을 부탁해 봤는데요 2번은 확실히 이해가 됐는데 1번은 맞는 설명인가요?

원래 코드인

namespace Server

{

class GameSession : Session

{

public override void OnConnected(EndPoint endPoint)

{

Console.WriteLine($"OnConnected : {endPoint}");

byte[] sendBuff = Encoding.UTF8.GetBytes("Welcome to MMORPG Server !!");

Send(sendBuff);

Thread.Sleep(5000);

Disconnect();

}

여기서는 SendBufferHelper를 사용 안했는데도 공용으로 사용되는 건가요?

sendBuff는 공용이 아닙니다. 각 세션마다 고유하게 생성되는 이유는 OnConnected 메서드가 각 클라이언트가 연결될 때마다 호출되기 때문입니다. 라고 ChatGPT는 답을 하는데 sendBuff가 SendBuffer 클래스 바깥에서 생성되면 공용이 되는 이유가 이해가 잘 안되네요ㅠㅜ

0

baljang

아 공용이라는게 public, private같이 접근성의 의미가 아니라 sendBuff는 세팅한 다음에 Send에 넣어주기만 하는게 편하니까 여러번 쓸 수 있다는 의미의 공용이었군요. 제가 이해한게 맞나요?

TLS 질문드립니다.

0

57

2

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

0

57

2

Unity Span

0

82

2

XML, Dll 차이점

0

111

2

Session 질문입니다

0

84

1

Write Read 커서 키워드

0

79

1

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

0

76

2

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

0

100

2

UnhandledException 으로 서버 터지는 경우

0

90

2

컨텐츠 단, 엔진 단

0

108

1

질문 있습니다

0

78

2

C# 게임서버 3D MMORPG

0

153

2

유니티6 버전

0

100

2

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

0

135

2

커서의 위치의 중요성

0

105

2

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

0

171

2

강의에 질문이 있습니다

0

89

2

멀티스레드 이해도 질문

0

98

1

500 vs 500

0

132

3

OnAcceptHandler 액션 함수

0

64

1

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

0

194

2

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

0

84

2

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

0

107

1

스핀락 질문.

0

111

2