Plusieurs restrictions de fournisseur sur SELECT

La fonction Select est utilisée pour déterminer l’état d’un ou plusieurs sockets dans un ensemble. Pour chaque socket, l’appelant peut demander des informations sur l’état de lecture, d’écriture ou d’erreur. Un ensemble de sockets est indiqué par une structure FD _ Set .

Windows Sockets 2 permet à une application d’utiliser plusieurs fournisseurs de services, mais la fonction Select est limitée à un ensemble de sockets associés à un fournisseur de services unique. Cela ne permet pas d’empêcher une application de disposer de plusieurs sockets ouverts par le biais de plusieurs fournisseurs.

Il existe deux façons de déterminer l’état d’un ensemble de sockets qui s’étend sur plusieurs fournisseurs de services :

  • Utilisation des fonctions WSAWaitForMultipleEvents ou WSAEventSelect lorsque la sémantique de blocage est utilisée.
  • utilisation de la fonction WSAAsyncSelect lorsque des opérations de non-blocage sont utilisées et que l’application utilise déjà une Windows pompe de messages.

Quand une application doit utiliser la sémantique de blocage sur un ensemble de sockets qui s’étend sur plusieurs fournisseurs, WSAWaitForMultipleEvents est recommandé. L’application peut également utiliser la fonction WSAEventSelect , qui permet aux _ événements réseau FD xxx (voir WSAEventSelect) de s’associer à un objet d’événement et de les gérer à partir du paradigme de l’objet d’événement (décrit dans e/s et objets d’événement avec chevauchement).

La fonction WSAAsyncSelect n’est pas limitée à un fournisseur unique, car elle utilise un descripteur de socket unique comme paramètre d’entrée. Notez cependant que la fonction WSAEventSelect offre de meilleures performances et une plus grande évolutivité par rapport à WSAAsyncSelect , car la surcharge liée à la gestion de la pompe de messages avec des messages d’événement Winsock augmente à mesure que le nombre total de sockets utilisés augmente.