Wiele ograniczeń dostawcy w przypadku wybrania
Funkcja select służy do określania stanu co najmniej jednego gniazda w zestawie. Dla każdego gniazda obiekt wywołujący może zażądać informacji o stanie odczytu, zapisu lub błędu. Zestaw gniazd jest wskazywany przez strukturę fd_set.
Windows Sockets 2 umożliwia aplikacji korzystanie z więcej niż jednego dostawcy usług, ale wybrać funkcję jest ograniczona do zestawu gniazd skojarzonych z jednym dostawcą usług. W żaden sposób nie ogranicza to aplikacji do otwierania wielu gniazd za pośrednictwem wielu dostawców.
Istnieją dwa sposoby określania stanu zestawu gniazd obejmujących więcej niż jednego dostawcę usług:
- Używanie funkcji WSAWaitForMultipleEvents lub funkcji WSAEventSelect podczas blokowania semantyki.
- Użycie funkcji WSAAsyncSelect, gdy są stosowane operacje nieblokujące, a aplikacja korzysta już z pompy komunikatów systemu Windows.
Jeśli aplikacja musi używać semantyki blokującej w zestawie gniazd obejmujących wielu dostawców, zaleca się WSAWaitForMultipleEvents. Aplikacja może również użyć funkcji WSAEventSelect, która umożliwia FD_XXX zdarzeń sieciowych (zobacz WSAEventSelect) w celu skojarzenia z obiektem zdarzenia i obsługi z poziomu paradygmatu obiektu zdarzenia (opisanego w Nakładające się operacje we/wy i obiekty zdarzeń).
Funkcja WSAAsyncSelect nie jest ograniczona do pojedynczego dostawcy, ponieważ przyjmuje deskryptor pojedynczego gniazda jako parametr wejściowy. Należy jednak pamiętać, że funkcja WSAEventSelect zapewnia lepszą wydajność i skalowalność w WSAAsyncSelect, ponieważ obciążenie związane z utrzymywaniem pompy komunikatów komunikatów zdarzeń winsock zwiększa się wraz ze wzrostem całkowitej liczby używanych gniazd.