inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Session #4

OnAcceptCompleted 코드에서 질문이 있습니다.

388

wocl00

작성한 질문수 7

0

1. Action.Invoke(), Func.Invoke() 

Invoke() 함수가 많이 등장하는데 MSDN을 살펴봐도 딱히 나오는 내용이 없더군요. 

느낌상 <T> 제네릭 객체를 반환하는 것 같은데 어떤 기능을 하는지 잘 모르겠습니다. 

 

2. 다형성에 관한 질문 

OnAccpetCompleted에서 

if (args.SocketError == SocketError.Success)

            {

                Session session = _sessionFactory.Invoke(); 

                session.Start(args.AcceptSocket);

                session.OnConnected(args.AcceptSocket.RemoteEndPoint);

            }

 

라는 코드가 있습니다. 

여기서 _sessionFactory에 ( ) => { return new GameSession( ) } 람다함수가 들어있습니다. 

 

_sessionFactory는 Func<Session> 이므로 람다함수가 반환한 GameSession이  Session 으로 형변환이 될 것 같습니다. 

 

그리고 _sessionFactory.Invoke( )를 하면서  Session 객체를 반환할 것 같습니다. <-- 1번 질문

 

그런데 여기서 반환된 Session 객체가 OnConnected라는 메소드를 가질 수 있다는게 잘 이해가 안갑니다. 

_sessionFactory에 람다함수를 연결하는 과정에서 GameSesison이 Session을 형변환을 했으면, GameSession에 Override된 OnConnected를 쓸 수 없는거 아닌가요? 

 

어떤 부분이 틀렸는지 알려주시면 감사하겠습니다.

 

네트워크 unity network C#

답변 1

0

Rookiss

1.
delegate 문법입니다.
delegate에 대해서 조사해보시기 바랍니다.

2.
매우 중요한 부분인데요.
virtual (가상) 함수에 대해 복습을 해보시기 바랍니다.
애당초 OnConnected는 abstract 함수이고 Session에 배치되어 있습니다.

C#에서의 RAII

0

66

3

TLS 질문드립니다.

0

79

2

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

0

74

2

Unity Span

0

97

2

XML, Dll 차이점

0

134

2

Session 질문입니다

0

96

1

Write Read 커서 키워드

0

88

1

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

0

85

2

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

0

112

2

UnhandledException 으로 서버 터지는 경우

0

102

2

컨텐츠 단, 엔진 단

0

118

1

질문 있습니다

0

93

2

C# 게임서버 3D MMORPG

0

159

2

유니티6 버전

0

106

2

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

0

154

2

커서의 위치의 중요성

0

110

2

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

0

176

2

강의에 질문이 있습니다

0

92

2

멀티스레드 이해도 질문

0

107

1

500 vs 500

0

147

3

OnAcceptHandler 액션 함수

0

70

1

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

0

204

2

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

0

86

2

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

0

112

1