Více omezení poskytovatele při výběru
Funkce vybrat slouží k určení stavu jednoho nebo více soketů v sadě. U každého soketu může volající požadovat informace o stavu čtení, zápisu nebo chyby. Sada soketů je označena fd_set strukturou.
Windows Sockets 2 umožňuje aplikaci používat více než jednoho poskytovatele služeb, ale vybrat funkci je omezená na sadu soketů přidružených k jednomu poskytovateli služeb. To nijak neomezí aplikaci, aby měla více soketů otevřených prostřednictvím více poskytovatelů.
Existují dva způsoby, jak určit stav sady soketů, které pokrývají více než jednoho poskytovatele služeb:
- Použití WSAWaitForMultipleEvents nebo WSAEventSelect funkce při blokování sémantiky.
- Použití funkce WSAAsyncSelect při použití neblokovacích operací a aplikace již používá pumpu zpráv systému Windows.
Pokud aplikace potřebuje používat blokující sémantiku na sadě soketů, které pokrývají více poskytovatelů, doporučujeme WSAWaitForMultipleEvents. Aplikace může také použít funkci WSAEventSelect, která umožňuje FD_XXX síťovým událostem (viz WSAEventSelect) přidružit k objektu události a zpracovat ho z paradigmatu objektu události (popsané v Překrývající se vstupně-výstupní a objekty událostí).
Funkce WSAAsyncSelect není omezena na jednoho zprostředkovatele, protože jako vstupní parametr přebírá popisovač jednoho soketu. Všimněte si však, že WSAEventSelect funkce nabízí lepší výkon a škálovatelnost oproti WSAAsyncSelect, protože režie při údržbě čerpadla zpráv se zprávami událostí Winsock se zvyšuje, jak se zvyšuje celkový počet používaných soketů.