Поделиться через


Выбор нескольких ограничений поставщика

Функция выбора используется для определения состояния одного или нескольких сокетов в наборе. Для каждого сокета вызывающий объект может запрашивать сведения о состоянии чтения, записи или ошибки. Набор сокетов указывается структурой fd_set .

Сокеты Windows 2 позволяют приложению использовать несколько поставщиков услуг, но функция выбора ограничена набором сокетов, связанных с одним поставщиком услуг. Это не позволяет приложению открывать несколько сокетов через нескольких поставщиков.

Существует два способа определить состояние набора сокетов, охватывающих несколько поставщиков услуг:

Если приложению необходимо использовать блокировку семантики в наборе сокетов, охватывающих несколько поставщиков, рекомендуется использовать WSAWaitForMultipleEvents. Приложение также может использовать функцию WSAEventSelect, которая позволяет FD_XXX сетевым событиям (см. раздел WSAEventSelect) связаться с объектом события и обрабатываться из парадигмы объекта события (описано в перекрывающихся объектах ввода-вывода и объектов событий).

Функция WSAsyncSelect не ограничена одним поставщиком, так как она принимает один дескриптор сокета в качестве входного параметра. Обратите внимание, что функция WSAEventSelect обеспечивает более высокую производительность и масштабируемость по сравнению с WSAAsyncSelect , так как расходы на обслуживание насоса сообщений с сообщениями о событиях Winsock увеличиваются по мере увеличения общего количества используемых сокетов.