inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Session #1

AcceptAsync 이후 pending 관련

514

작성자 없음

작성한 질문수 0

0

void RegisterAccept(SocketAsyncEventArgs args)

        {

            args.AcceptSocket = null;

            bool pending = _listenSocket.AcceptAsync(args);

            if (!pending)

            {

                OnACceptCompleted(null, args);

            }

        }

 

위 Function에서 보면  pending == false 인경우 OnACceptCompleted 함수를 바로 실행시키는데요

 

init 함수에서

SocketAsyncEventArgs args = new SocketAsyncEventArgs();

            args.Completed += new EventHandler<SocketAsyncEventArgs>(OnACceptCompleted);

            RegisterAccept(args);

 

위와같이 args.Completed에 OnACceptCompleted를 등록해 주었기 때문에 펜딩이 안되어 바로 Accept가 된 상황에서도 등록한 이벤트로 인해 OnACceptCompleted 가 실행되는것 아닌가요?

if (pending == false)

            {

                OnACceptCompleted(null, args);

            }

 

이 코드는 불필요 한게 아닌가 궁금합니다.

실제로 로그를 찍어보면 서버가 AcceptAsync를 하는 시점과 클라이언트가 접속하는 시간 차이가 있어서 pending이 항상 true로찍혔고 그래서 pending이 false일때에 대한 상황은 재현하지 못했습니다.

pending unity network C#

답변 1

0

Rookiss

안녕하세요
모든 수강생들에게 드리는 말씀이지만,
우리가 만든게 아닌 외부 함수는 꼭 MSDN 문서를 살펴보는 습관을 들여야 합니다.
구글에서 AcceptAsync를 쳐보면 자세한 스펙에 대해 MS에서 정리를 해놨는데요.

https://docs.microsoft.com/ko-kr/dotnet/api/system.net.sockets.socket.acceptasync?view=net-6.0

작업이 동기적으로 완료된 경우 (false),
Completed이 이벤트가 호출되지 않는다는 점을 알 수 있습니다.
따라서 이 경우 우리가 직접 호출해야 합니다.

TLS 질문드립니다.

0

50

2

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

0

54

2

Unity Span

0

80

2

XML, Dll 차이점

0

109

2

Session 질문입니다

0

81

1

Write Read 커서 키워드

0

77

1

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

0

72

2

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

0

99

2

UnhandledException 으로 서버 터지는 경우

0

88

2

컨텐츠 단, 엔진 단

0

106

1

질문 있습니다

0

77

2

C# 게임서버 3D MMORPG

0

150

2

유니티6 버전

0

99

2

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

0

134

2

커서의 위치의 중요성

0

104

2

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

0

170

2

강의에 질문이 있습니다

0

86

2

멀티스레드 이해도 질문

0

96

1

500 vs 500

0

130

3

OnAcceptHandler 액션 함수

0

64

1

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

0

193

2

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

0

83

2

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

0

107

1

스핀락 질문.

0

110

2