Compartir a través de


Restricciones de varios proveedores en Seleccionar

La funciónselect se usa para determinar el estado de uno o varios sockets de un conjunto. Para cada socket, el autor de la llamada puede solicitar información sobre el estado de lectura, escritura o error. Un conjunto de sockets se indica mediante una estructura fd_set.

Windows Sockets 2 permite que una aplicación use más de un proveedor de servicios, pero la función seleccionar está limitada a un conjunto de sockets asociados a un único proveedor de servicios. Esto no impide que una aplicación tenga varios sockets abiertos a través de varios proveedores.

Hay dos maneras de determinar el estado de un conjunto de sockets que abarca más de un proveedor de servicios:

Cuando una aplicación necesita usar la semántica de bloqueo en un conjunto de sockets que abarca varios proveedores, se recomienda WSAWaitForMultipleEvents. La aplicación también puede usar la función WSAEventSelect, que permite que los eventos de red de FD_XXX (consulte WSAEventSelect) se asocien a un objeto de evento y se controlan desde dentro del paradigma del objeto de evento (descrito en objetos de E/S superpuestos y objetos de evento).

La funciónWSAAsyncSelect no está restringida a un único proveedor porque toma un único descriptor de socket como parámetro de entrada. Sin embargo, tenga en cuenta que la función WSAEventSelect ofrece un mejor rendimiento y escalabilidad a través de WSAAsyncSelect, ya que la sobrecarga de mantener la bomba de mensajes con mensajes de evento Winsock aumenta a medida que aumenta el número total de sockets que se usan.