The
select function is used to determine the status of one or more sockets in a set. For each socket, the caller can request information on read, write, or error status. A set of sockets is indicated by an
FD_SET structure.
Windows Sockets 2 allows an application to use more than one service provider, but the
select function is limited to a set of sockets associated with a single service provider. This does not in any way restrict an application from having multiple sockets open through multiple providers.
There are two ways to determine the status of a set of sockets that spans more than one service provider:
When an application needs to use blocking semantics on a set of sockets that spans multiple providers,
WSAWaitForMultipleEvents is recommended. The application can also use the
WSAEventSelect function, which allows the FD_XXX network events (see
WSAEventSelect) to associate with an event object and be handled from within the event object paradigm (described in
Overlapped I/O and Event Objects).
The WSAAsyncSelect function is not restricted to a single provider because it takes a single socket descriptor as an input parameter. Note however, that WSAEventSelect function offers better performance and scalability over WSAAsyncSelect as the overhead of maintaining the message pump with Winsock event messages increases as the total number of sockets being used increases.
Send comments about this topic to Microsoft
Build date: 10/29/2009