190712-4 - IOCP 모델
비동기 입출력을 쉽게 할 수 있는 객체를 만들었다.
// 입출력 완료 포트 생성
HANDLE hcp = CreateIoCompletionPort(
INVALID_HANDLE_VALUE, NULL, 0, 0);//- 첫 번째 인수가 -1이면 ICOP 오브젝트를 생성
if(hcp == NULL) return -1;
// 소켓과 입출력 완료 포트 연결
HANDLE hResult = CreateIoCompletionPort((HANDLE)client_sock, hcp,
(DWORD)client_sock, 0); // 첫 번째 인수가 IOCP인수를 가지면 IOCP와 해당 소켓을 연결한다.
//키=소켓번호 로 설정, 0 = 스레드를 전부 깨운다.
if(hResult == NULL) return -1;
// 비동기 입출력 완료 기다리기
retval = GetQueuedCompletionStatus(hcp, &cbTransferred,//받은 바이트수
(LPDWORD)&client_sock,// 키값
(LPOVERLAPPED *)&ptr, // 오버랩드 구조체 (의 소켓번호랑 키값이 현재코드에선 동일)
INFINITE
);//있으면 확인 없으면 블로킹
![](https://blog.kakaocdn.net/dn/JY0Bw/btqymgi7Tro/ZY2oqNkkD7vuGaJNfl1BcK/img.png)
'Socket Programming' 카테고리의 다른 글
Overlapped Model struct (0) | 2019.09.21 |
---|---|
WSAEventSelect Model - 2 (0) | 2019.09.20 |
WSAAsyncSelect Model (0) | 2019.09.19 |
[Socket] SELECT MODEL 네트워크 (0) | 2019.09.18 |
비동기 IO (Overlapped IO) (0) | 2019.09.18 |