inflearn logo
강의

講義

知識共有

[C#とUnityで作るMMORPGゲーム開発シリーズ] Part4:ゲームサーバー

セッション #2

_sendArgs 위로 올리는 이유 질문입니다.

245

nr97819

投稿した質問数 6

0

1. _sendArgs를 Send에서 멤버변수로 빼주고,

2. _sendArgs.Completed += 이벤트 연결 작업을

Start에서 하도록 옮겨주셨는데, 이 부분이 잘 이해가 안됩니다..

설명에서 말씀하셨듯이 send는 recv와는 다르게, 송신하는 시점에서 버퍼의 정보를 알 수 없어서 라고 하셨는데,

전역으로 올려주면 버퍼의 정보를 몰라도 채울수가 있는 건가요? 그리고 크기를 크게 잡아서 만들어서 보내는 행위를 하게 되면, 성능 문제 떄문에 안되는 건가요?

그리고 이벤트 구독? 과 같은 행위를 왜 Start 함수내로 옮기는 것인지도 헷갈립니다..

network unity C#

回答 2

0

nr97819

제가 잘못이해했었네요! 해결 감사합니다!

0

Rookiss

전역으로 올려준 것은 아니고
Session마다 멤버 변수로 자기 자신의 SendArg를 1개씩 들고 있는 것입니다.

이벤트 연결 작업은 Start에서 한 이유는
어차피 콜백 함수 (완료 통지를 ~~ 함수로 받겠다!) 는 바뀌지 않기 때문입니다.
OnSendCompleted라는 함수로 무조건 완료 통지를 받기로 약속을 하는 것이죠.

다만 실제로 보낼 데이터가 무엇이 될지는 아직 모르기 때문에
버퍼는 아직 세팅하지 않고,
추후 Send()를 호출할 때 연결을 해주고 있습니다.
이 부분이 RecvArg와 다른건데 recv는 recvBuffer를 Start에서 세팅하고 있지만,

SendArg는 그렇지 않습니다.

전역으로 올려주면 버퍼의 정보를 몰라도 채울수가 있는 건가요? 그리고 크기를 크게 잡아서 만들어서 보내는 행위를 하게 되면, 성능 문제 떄문에 안되는 건가요?

이 부분은 질문이 잘 이해가 안가네요.
[크기를 크게 잡아서 보내는 행위라고] 이해하신 이유가 있을까요?
SendBuffer는 딱히 크게 잡는 것이 아니고
보낼 데이터에 맞게 잡아서 연결을 해줍니다.

TLS 질문드립니다.

0

39

2

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

0

45

2

Unity Span

0

72

2

XML, Dll 차이점

0

103

2

Session 질문입니다

0

78

1

Write Read 커서 키워드

0

72

1

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

0

68

2

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

0

97

2

UnhandledException 으로 서버 터지는 경우

0

84

2

컨텐츠 단, 엔진 단

0

103

1

질문 있습니다

0

76

2

C# 게임서버 3D MMORPG

0

143

2

유니티6 버전

0

96

2

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

0

132

2

커서의 위치의 중요성

0

102

2

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

0

169

2

강의에 질문이 있습니다

0

85

2

멀티스레드 이해도 질문

0

94

1

500 vs 500

0

127

3

OnAcceptHandler 액션 함수

0

60

1

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

0

187

2

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

0

81

2

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

0

104

1

스핀락 질문.

0

109

2