• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

RegisterAccept() 질문

21.09.07 22:29 작성 조회수 153

0

우선 먼저 사과드립니다... 비슷한 질문이 많은데 그 글들을 봐도 이해에 대해 확신이 서지 않아 같은 질문을 또 드리는것 같네요.

의문이 있는 부분은

SocketAsyncEvnetArgs 부분 입니다.

1. RegisterAccept 에서 AcceptAsync로 args를 처리.

2. args안에 EventHandler<T> Completed; 존재

3. args안에 OnCompleted가 존재하고, Accepted되면 OnCompleted가 실행되면서 Completed.Invoke로 OnAcceptCompleted 동작.

비동기로 accept를 처리하고, accept가 완료되면 callback을 통해서 OnAcceptCompleted 함수가 수행된다는 개념은 이해했지만 동작 메커니즘이 정확하게 이해되지 않아 질문드립니다. 

아래 사이트를 참고하였을때, OnCompleted에 뭔가 정의가 있어야 함수가 실행이 될텐데요,

event - C# 참조 | Microsoft Docs

EventHandler<TEventArgs> 대리자 (System) | Microsoft Docs

VS2019에서 정의를 타고 올라갔으나....주석 뿐인 정의만 있었습니다. Socket까지도 정의를 타고 올라갔는데 마찬가지로 프로퍼티+주석만 잔뜩있었습니다 ㅠㅠ....

제가 옳게 이해한 것이 맞을까요?

답변 1

답변을 작성해보세요.

0

네 이해하신게 맞습니다.
내부 동작 메커니즘이 이해 안 가서 답답하시겠지만,
그 부분은 나중에 C++ 서버를 만들어보시면 알게 됩니다.
실제로 C# 서버가 Windows 환경에선 내부적으로 IOCP 로 구현되어 있습니다.
방대한 코드를 작업할 때는 100% 모든게 이해가 안 가더라도
일단 어느 정도는 넘어가는 융통성이  필요합니다.