게임 서버/[Inflearn_rookiss]올인원_클라&서버 연동17 17. Session Session 복습- Session은 클라이언트와 통신하기 위해 클라이언트에 관한 정보를 담고 있는 클래스이다. - Session의 특징은 기본 기능들은 서버코어단에서 제공하고, 서버단에서 기능을 확장할 수 있는 구조를 지니고 있다. Session- Send, Recv, Connect, Disconnect에 대한 내용을 처리하고, 이를 담당하는 Event(Overlapped)들을 소유하고 있다. - 위 4개의 이벤트들은 이전에 Listener 예제에서 봤던 것처럼 Register, Process의 쌍을 처리하며, 내부 작동과정은 AcceptEx를 사용하는 것과 유사한 패턴을 띈다. - IOCP큐와 주시할 소켓을 전달하고 각 이벤트가 발생하면 IOCP큐에 해당 이벤트를 던져넣는 식(이 로직들 또한 내가 I.. 2023. 12. 11. 16. Service Service- Service란 무엇일까? Service는 앞서 설명했던 일련의 과정들을 하나로 묶는 클래스다. - Service는 Server, Client 총 2종류로 다시 나뉜다. - 일련의 과정을 처음부터 다시 설명해보자면 서버의 경우 아래의 절차를 따른다. 1. 서버 소켓 생성 (직원 고용) 2. 해당 소켓을 현재 나의 아이피주소와 포트번호에 바인드 (매장 주소와 메뉴판 숙지) 3. Listen 함수를 호출해서 accept 요청을 받을 수 있는 상태로 전환 4. accept 요청을 받으면 클라이언트 소켓으로 받아서 보관하고, 그 소켓으로 해당 클라이언트와 통신 이 일련의 과정들을 묶어서 처리하는데, Listener 클래스에서는 1~4번을 모두 처리하고 있다. ServerService는 1~4번의.. 2023. 12. 11. 15. IocpCore IocpCore- IocpCore는 IOCP 구조의 뼈대인 큐 역할을 하는 클래스이다. - 주로 쓰이는 함수는 Register, Dispatch가 있는데 Register는 IocpObject를 담는 함수이며, Dispatch는 멀티스레드가 실행하여 이 함수를 실행하여 큐에 담긴 Job들을 처리하는 작업을 수행한다. - IocpObject는 이전 IOCP 예제에서 Session에 해당하는 오브젝트이며, 이전에는 클라이언트만을 담당했지만 이제는 Accept 명령을 받는 서버 소켓도 이 클래스를 상속받아 Listener라는 객체로 관리된다. - IocpObject를 상속받은 Session은 Send, Recv라는 Job을 생성하고 Listener는 Accpet라는 Job을 생성해서 IOCP큐에 담는다. - 그.. 2023. 12. 11. 14. IOCP IOCP란- IOCP는 I/O Completion Port의 약자로, 비동기 I/O 처리를 효율적으로 처리하기 위한 모델. IOCP의 동작 원리- IOCP의 동작 원리는 다음과 같다. 1. Listen Socket을 만든다. (클라 접속 신호를 수신하는 소켓) (Overlapped 모델과 다른 점은 이 소켓을 비동기 소켓으로 변경해줄 필요가 없다) 2. IOCP 큐를 만든다 (CreateIoCompletionPort 함수를 사용, 인자를 어떻게 넘기느냐에 따라 동작이 달라짐)// 작업이 담기는 큐를 만든다. HANDLE iocpHandle = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);3. while루프 내부에서 accept를 통해 클라이언트가 .. 2023. 12. 11. 이전 1 2 3 4 5 다음