Escutando conexões em um SAN
A figura a seguir mostra uma visão geral de como a opção Soquetes do Windows define um soquete SAN para reconhecer e enfileirar, ou seja, escutar solicitações de conexão de entrada de um par remoto. Os tópicos a seguir descrevem o processo de escuta com mais detalhes.
Quando a opção Windows Sockets recebe uma chamada WSPListen iniciada por um aplicativo, a opção sempre chama a função WSPListen do provedor TCP/IP primeiro para definir o soquete do provedor TCP/IP para reconhecer e enfileirar solicitações de conexão de entrada. Se o soquete do aplicativo estiver associado ao endereço IP de uma NIC SAN ou ao endereço IP curinga, a opção também usará o provedor de serviços SAN apropriado para criar e associar um soquete adicional. Para obter mais informações, consulte Criando e associando soquetes SAN.
Escutando solicitações de conexão de entrada
Depois de solicitar que um provedor de serviços SAN crie e associe o soquete SAN, a opção chama a função WSPListen do provedor de serviços SAN para fazer com que o soquete SAN escute conexões de entrada e especifique um limite no número de solicitações de conexão de entrada que o provedor de serviços SAN pode enfileirar.
Configurando para aceitar conexões de entrada
A opção aceita conexões de entrada somente no modo sem bloqueio. A opção chama a função WSPEventSelect do provedor de serviços SAN para colocar um soquete no modo sem bloqueio e solicitar a notificação de eventos de conexão de entrada. Nessa chamada, a opção passa o código FD_ACCEPT e o objeto de evento a ser associado a esse código. Depois que o provedor de serviços SAN recebe uma solicitação de conexão em seu soquete que foi estabelecida anteriormente para escuta, o provedor de serviços SAN chama a função Win32 SetEvent para sinalizar o objeto de evento associado. A opção escuta eventos de conexão de entrada em um thread dedicado e aceita ou rejeita a conexão depois que o objeto de evento é sinalizado. Para obter mais informações, consulte Aceitando solicitações de conexão.
Indicando a recusa de uma solicitação de conexão a um par remoto
Se uma solicitação de conexão chegar e a lista de pendências de solicitações de conexão do provedor de serviços SAN estiver cheia, o provedor de serviços SAN deverá indicar imediatamente ao par remoto que recusa a solicitação de conexão. Nesse caso, o provedor de serviços SAN não sinaliza o objeto de evento para informar a opção para aceitar ou rejeitar a solicitação de conexão. O provedor de serviços SAN no par remoto deve falhar em sua operação de conexão iniciada por uma chamada WSPConnect com o código de erro WSAECONNREFUSED.