IOCP Server ✨ 시작하기 전에 이번에 IOCP를 활용해 아무 클라이언트한테 수신을 받는 그대로 전송하는 에코서버(Echo Server)를 구현해 볼 것이다. 이전 글만으로 IOCP를 완전히 이해하는 것은 불가능하기 때문에 이 시리즈에서 천천히 IOCP를 활용해 볼 예정이다. 1. 오버랩 구조체를 상속받기 // 완료된 비동기 함수가 무엇인지 식별하기 위한 열거형 enum class EventType { Send, Recv } // 확장된 오버랩 구조체 struct AsyncEvent : OVERLAPPED { AsyncEvent(EventType eventType) : eventType(eventType) { // 오버랩 구조체의 내용물 비우기 ZeroMemory(this, sizeof(OVERL..
Server
IOCP(I/O Completion Port) IOCP는 I/O Completion Port의 약어로, 윈도우에서 지원하는 비동기 입출력 통지 모델이다. 이 모델은 OVERLAPPED I/O(이하 오버랩)를 기반으로 하고 있지만 차이점으로는 완료통지 방식이 바뀌고, 멀티스레드를 통한 성능 향상이 있다. 이 글에서는 오버랩 모델과 '완료통지'라는 개념을 알고 있다는 것을 전제로 하기 때문에 먼저 오버랩을 공부하고 IOCP를 찾아보면 도움이 될 것이다. 오버랩 vs IOCP 오버랩 오버랩은 비동기 함수를 호출하고 작업이 완료되면 Alertable Wait 상태를 통해 완료통지를 얻어올 수 있다. 완료되면 이벤트 또는 Completion Routine이라는 콜백함수가 호출된다. IOCP IOCP은 기본적인 형..