选择时存在多个提供程序限制

选择 函数用于确定集中一个或多个套接字的状态。 对于每个套接字,调用方可以请求有关读取、写入或错误状态的信息。 一组套接字由 fd_set 结构指示。

Windows 套接字 2 允许应用程序使用多个服务提供商,但 选择 函数仅限于与单个服务提供商关联的一组套接字。 这绝不会限制应用程序通过多个提供程序打开多个套接字。

可通过两种方法来确定跨越多个服务提供商的一组套接字的状态:

当应用程序需要在跨多个提供程序的一组套接字上使用阻塞语义时,建议 WSAWaitForMultipleEvents。 应用程序还可以使用 WSAEventSelect 函数,该函数允许FD_XXX网络事件(请参阅 WSAEventSelect)与事件对象关联,并从事件对象范例(重叠 I/O 和事件对象中所述)进行处理。

WSAAsyncSelect 函数不限于单个提供程序,因为它采用单个套接字描述符作为输入参数。 但请注意,WSAEventSelect 函数比 WSAAsyncSelect 提供更好的性能和可伸缩性,因为使用 Winsock 事件消息维护消息泵的开销随着正在使用的套接字总数的增加而增加。