Função de retorno de chamada LPWSPLISTEN (ws2spi.h)

A função LPWSPListen estabelece um soquete para escutar conexões de entrada.

Sintaxe

LPWSPLISTEN Lpwsplisten;

int Lpwsplisten(
  [in]  SOCKET s,
  [in]  int backlog,
  [out] LPINT lpErrno
)
{...}

Parâmetros

[in] s

Descritor que identifica um soquete associado e não conectado.

[in] backlog

Comprimento máximo para o qual a fila de conexões pendentes pode aumentar. Se esse valor for SOMAXCONN, o provedor de serviços deverá definir a lista de pendências como um valor máximo "razoável". Não há nenhuma provisão padrão para descobrir o valor real da lista de pendências.

[out] lpErrno

Ponteiro para o código de erro.

Retornar valor

Se nenhum erro ocorrer, LPWSPListen retornará zero. Caso contrário, um valor de SOCKET_ERROR será retornado e um código de erro específico estará disponível no lpErrno.

Código do Erro Significado
WSAENETDOWN
O subsistema de rede falhou.
WSAEADDRINUSE
O endereço local do soquete já está em uso e o soquete não foi marcado para permitir a reutilização de endereço com SO_REUSEADDR. Esse erro geralmente ocorre no momento de Bind, mas pode ser adiado até essa função se o **bind** estiver em um endereço parcialmente curinga (envolvendo ADDR_ANY) e se um endereço específico precisar ser confirmado no momento dessa função.
WSAEINPROGRESS
A função é invocada quando um retorno de chamada está em andamento.
WSAEINVAL
O soquete não foi associado ao LPWSPBind.
WSAEISCONN
O soquete já está conectado.
WSAEMFILE
Nenhum descritor de soquete disponível.
WSAENOBUFS
Nenhum espaço de buffer disponível.
WSAENOTSOCK
O descritor não é um soquete.
WSAEOPNOTSUPP
O soquete referenciado não é de um tipo que dá suporte à operação LPWSPListen .

Comentários

Para aceitar conexões, um soquete é criado primeiro com LPWSPSocket associado a um endereço local com LPWSPBind, uma lista de pendências para conexões de entrada é especificada com LPWSPListen e, em seguida, as conexões são aceitas com LPWSPAccept. LPWSPListen aplica-se somente a soquetes orientados para conexão (por exemplo, SOCK_STREAM). Os soquetes são colocados no modo passivo em que as solicitações de conexão de entrada são reconhecidas e enfileiradas até a aceitação pelo cliente SPI do Windows Sockets.

Essa função normalmente é usada por servidores que podem ter mais de uma solicitação de conexão por vez: se uma solicitação de conexão chegar com a fila cheia, o cliente receberá um erro com uma indicação de WSAECONNREFUSED.

LPWSPListen deve continuar funcionando racionalmente quando não houver descritores disponíveis. Ele deve aceitar conexões até que a fila seja esvaziada. Se os descritores estiverem disponíveis, uma chamada posterior para LPWSPListen ou LPWSPAccept recarregará a fila para a lista de pendências atual ou mais recente, se possível, e retomará a escuta para conexões de entrada.

Um cliente SPI do Windows Sockets pode chamar LPWSPListen mais de uma vez no mesmo soquete. Isso tem o efeito de atualizar a lista de pendências atual para o soquete de escuta. Se houver mais conexões pendentes do que o novo valor de lista de pendências, o excesso de conexões pendentes será redefinido e descartado.

O parâmetro de lista de pendências é limitado (silenciosamente) a um valor razoável, conforme determinado pelo provedor de serviços. Valores ilegais são substituídos pelo valor legal mais próximo. Não há nenhuma provisão padrão para descobrir o valor real da lista de pendências.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho ws2spi.h

Confira também

LPWSPAccept

LPWSPConnect

LPWSPSocket