Compartilhar via


Várias restrições de provedor na seleção

A função selecionar é usada para determinar o status de um ou mais soquetes em um conjunto. Para cada soquete, o chamador pode solicitar informações sobre o status de leitura, gravação ou erro. Um conjunto de soquetes é indicado por uma estrutura fd_set.

O Windows Sockets 2 permite que um aplicativo use mais de um provedor de serviços, mas a função selecionar é limitada a um conjunto de soquetes associados a um único provedor de serviços. Isso não restringe de forma alguma um aplicativo de ter vários soquetes abertos por meio de vários provedores.

Há duas maneiras de determinar o status de um conjunto de soquetes que abrange mais de um provedor de serviços:

  • Usando o WSAWaitForMultipleEvents ou funções de WSAEventSelect ao bloquear a semântica.
  • Usar a funçãoWSAAsyncSelect quando operações não desbloqueadas são empregadas e o aplicativo já está usando uma bomba de mensagem do Windows.

Quando um aplicativo precisa usar semântica de bloqueio em um conjunto de soquetes que abrange vários provedores, é recomendável WSAWaitForMultipleEvents. O aplicativo também pode usar a função WSAEventSelect, que permite que os eventos de rede FD_XXX (consulte WSAEventSelect) associem a um objeto de evento e sejam manipulados de dentro do paradigma do objeto de evento (descrito em E/S sobreposto e objetos de evento).

A função WSAAsyncSelect não está restrita a um único provedor porque usa um único descritor de soquete como um parâmetro de entrada. No entanto, observe que função WSAEventSelect oferece melhor desempenho e escalabilidade em WSAAsyncSelect à medida que a sobrecarga de manter a bomba de mensagem com mensagens de evento Winsock aumenta à medida que o número total de soquetes que estão sendo usados aumenta.