Select에 대한 여러 공급자 제한 사항
select 함수는 집합에 있는 하나 이상의 소켓의 상태 확인하는 데 사용됩니다. 각 소켓에 대해 호출자는 읽기, 쓰기 또는 오류 상태 대한 정보를 요청할 수 있습니다. 소켓 집합은 fd_set 구조체로 표시됩니다.
Windows 소켓 2를 사용하면 애플리케이션에서 둘 이상의 서비스 공급자를 사용할 수 있지만 select 함수는 단일 서비스 공급자와 연결된 소켓 집합으로 제한됩니다. 이렇게 해서 애플리케이션이 여러 공급자를 통해 여러 소켓을 열지 못하도록 제한하지는 않습니다.
두 개 이상의 서비스 공급자에 걸쳐 있는 소켓 집합의 상태 확인하는 두 가지 방법이 있습니다.
- 차단 의미 체계를 사용할 때 WSAWaitForMultipleEvents 또는 WSAEventSelect 함수를 사용합니다.
- 차단 해제 작업을 사용하고 애플리케이션이 이미 Windows 메시지 펌프를 사용하고 있는 경우 WSAAsyncSelect 함수를 사용합니다.
애플리케이션이 여러 공급자 에 걸쳐 있는 소켓 집합에서 차단 의미 체계를 사용해야 하는 경우 WSAWaitForMultipleEvents 를 사용하는 것이 좋습니다. 또한 애플리케이션은 WSAEventSelect 함수를 사용하여 FD_XXX 네트워크 이벤트(WSAEventSelect 참조)를 이벤트 개체와 연결하고 이벤트 개체 패러다임 내에서 처리할 수 있습니다(겹치는 I/O 및 이벤트 개체에 설명됨).
WSAAsyncSelect 함수는 단일 소켓 설명자를 입력 매개 변수로 사용하므로 단일 공급자로 제한되지 않습니다. 그러나 WSAEventSelect 함수는 사용 중인 총 소켓 수가 증가함에 따라 기본 Winsock 이벤트 메시지로 메시지 펌프를 포함하는 오버헤드가 증가함에 따라 WSAAsyncSelect보다 성능 및 확장성이 향상됩니다.