Compartilhar via


WSPAccept

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função condicionalmente aceita uma conexão baseia a valor de retorno de uma função condição.

Syntax

SOCKET WSPAccept(
  SOCKET s,
  struct sockaddr FAR* addr,
  LPINT addrlen,
  LPCONDITIONPROC lpfnCondition,
  DWORD dwCallbackData,
  LPINT lpErrno 
);

Parameters

  • s
    [no] Descritor identificando um Soquete que está aguardando conexões após um WSPListen.
  • addr
    [out] Opcional ponteiro para uma reserva que recebe o endereço da entidade de conexão, como conhecidos por provedor de serviço. O formato exato das addr parâmetro é determinado pelo família de endereços estabelecido quando a Soquete foi criado.
  • addrlen
    [in, Out] Ponteiro opcional para um inteiro que contém o comprimento das addr parâmetro.
  • lpfnCondition
    [no] Procedimento endereço instância de um opcional-função condição fornecida pelo Soquetes do Windows. Essa função é usada na aceitar ou rejeitar decisão com base em informações de chamador passadas como parâmetros.
  • dwCallbackData
    [no] Dados de retorno de chamada a serem passados voltar para o cliente como o valor de sockets do Windows (Winsock) de dwCallbackData parâmetro de função a condição. Este parâmetro não é interpretado pelo provedor de serviço.
  • lpErrno
    [out] Ponteiro para o código de erro.

Return Value

Se não houver erro, essa função retornará um valor de tipo Socket que é um descritor para a Soquete aceito. Caso contrário, será retornado um valor de INVALID_SOCKET e um código de erro específico está disponível em lpErrno.

A seguinte tabela mostra os códigos de erro possível.

Valor de erro Descrição

WSAECONNREFUSED

Solicitação de conexão foi rejeitada forçada, conforme indicado na valor de retorno da função condição (CF_REJECT).

WSAENETDOWN

falha no subsistema de rede.

WSAEFAULT

O addrlen parâmetro é muito pequeno ou a lpfnCondition Não é parte do espaço de endereço usuário.

WSAEINPROGRESS

Bloquear chamar Soquetes do Windows é em andamento.

WSAEINVAL

WSPListen não foi chamado antes de WSPAccept, parâmetro g especificado na função a condição não é um válido valor, a valor de retorno de função a condição não for um válido um OU QUALQUER maiúsculas e minúsculas onde o Soquete especificado é em um inválido estado.

WSAEMFILE

Fila é não vazia na entrada para WSPAccept e existem há Soquete disponível descritores.

WSAENOBUFS

Nenhuma espaço do buffer está disponível.

WSAENOTSOCK

O descritor não é um Soquete.

WSAEOPNOTSUPP

Soquete de referência não é um tipo que ofereça suporte ao serviço Connection-Oriented.

WSATRY_AGAIN

Aceitação da solicitação de conexão foi adiada, conforme indicado na valor de retorno da função condição (CF_DEFER).

WSAEWOULDBLOCK

Soquete é marcado como de não bloqueio e nenhuma conexão está presente para ser aceita.

WSAEACCES

Solicitação de conexão que foi oferecida tem tempo limite atingido fora ou sido withdrawn.

Remarks

Essa função extrai a primeira conexão sobre a fila de pendente conexões em Soquete se verifica-lo contra a função condição, desde a função condição for especificada (ou seja, não NULL). A função condição deve ser executado no mesmo segmento como essa rotina. Se a função condição retorna CF_ACCEPT, essa função criará um novo Soquete.

Soquetes recém-criados possuir as mesmas propriedades como a Soquete s, Incluindo rede eventos registrados com WSPEventSelect. Quando novos descritores Soquete são alocados, provedores não-IFS devem chamar WPUCreateSocketHandle.

Se a função condição retorna CF_REJECT, WSPAccept Rejeita a solicitação de conexão. Se Aceitação/recusa de decisão do aplicativo não pode ser feita imediatamente, a função condição retornará CF_DEFER para indicar que nenhuma decisão foi feita. Nenhuma ação sobre este solicitação de conexão é a serem tomadas pelo provedor de serviço. Quando o aplicativo está pronto para executar ação no solicitação de conexão, ele irá invocar WSPAccept novamente e retornar o CF_ACCEPT ou CF_REJECT como uma valor de retorno da função de condição.

De soquetes que estão no bloqueio (usar como padrão) modo, se nenhum pendente conexões estão presentes na fila, WSPAccept Bloqueia o chamador até que uma conexão estiver presente. Para os soquetes em de não bloqueio modo, se essa função é chamado quando não pendente conexões estão presentes na fila, WSPAccept Retorna o código de erro WSAEWOULDBLOCK. O Soquete aceita não pode ser usado para aceitar mais conexões. O original Soquete permanecerá aberto.

O parâmetro addr é um parâmetro de resultados que é preenchido com o endereço da entidade de conexão, como conhecidos por provedor de serviço. O formato exato das addr parâmetro é determinado pelo família de endereços no qual a comunicação está ocorrendo. O addrlen é um parâmetro value-Result; Ele conterá inicialmente o quantidade de espaço apontado pelo addr. Em retorno, ele deve conter o real comprimento (em bytes) do endereço retornado pelo provedor de serviço. Este chamar é usado com tipos Soquete Connection-Oriented como SOCK_STREAM. Se addr e / ou addrlen são iguais para NULL, em seguida, há informações sobre o remoto endereço da Soquete aceito é retornado. Caso contrário, esses dois parâmetros devem ser preenchidos, independentemente de se a função condição for especificada ou que ela retorna.

O seguinte amostra de código mostra o protótipo da função de condição.

int CALLBACK 
ConditionFunc(
  IN LPWSABUF lpCallerId, 
  IN LPWSABUF lpCallerData, 
  IN OUT LPQOS lpSQOS, 
  IN OUT LPQOS lpGQOS,
  IN LPWSABUF lpCalleeId, 
  IN LPWSABUF lpCalleeData, 
  OUT GROUP FAR* g, 
  IN DWORD  dwCallbackData 
);

O lpCallerId e lpCallerData São Parâmetros valor que devem conter o endereço da entidade de conexão e quaisquer dados usuário que foi enviados along with o solicitação de conexão. Se nenhum identificador chamador ou dados chamador estiver disponível, o correspondente parâmetro será NULL. Muitos protocolos rede não conectar suporte-tempo chamador dados. Mais convencionais protocolos rede podem ser esperados para suporte chamador identificador informações na conexão-tempo solicitação. O buf Parte de WSABUF apontada pelo lpCallerId aponta para um sockaddr. O sockaddr é interpretado de acordo com o família de endereços (geralmente por conversão a sockaddr Para alguns tipo específico de família de endereços).

O lpCalleeId é um parâmetro valor que contém o local endereço da entidade conectada. A parte buf a WSABUF apontada pelo lpCalleeId aponta para um sockaddr. O sockaddr é interpretado de acordo com o família de endereços (geralmente por conversão a sockaddr Para alguns tipo específico de família de endereços).

O lpCalleeData é um parâmetro resultado usado pela função condição para fornecer dados usuário voltar para a entidade de conexão. O armazenamento para esta dados deve ser fornecido pelo provedor de serviço. O lpCalleeData-> Len Contém inicialmente o comprimento da reserva alocados pela provedor de serviços e apontado pelo lpCalleeData-> buf. Um valor de zero significa passando dados usuário voltar para o chamador não é com suporte. A função condição irá copiar up to lpCalleeData-> Len bytes de dados em lpCalleeData-> bufe em seguida, atualização lpCalleeData-> Len Para indicar o real número de bytes transferidos. Se nenhum dados usuário deve ser passado voltar para o chamador, a função condição definirá lpCalleeData-> Len para zero. O formato de todos os endereço e dados usuário é específico para o família de endereços ao qual pertence o Soquete.

O dwCallbackData valor do parâmetro passado para a função condição é o valor passado como o dwCallbackData parâmetro no original WSPAccept chamar. Esse valor é interpretada somente pelo cliente de sockets do Windows (Winsock). Isso permite que um cliente para transmitir algumas informações de contexto de WSPAccept site chamar por meio para a função condição, que fornece a função condição com quaisquer informações adicionais exigido para determinar se deseja aceitar a conexão. Um uso típico é para transmitir um (adequadamente CAST) ponteiro para uma estrutura de dados contendo referências a objetos Application-defined com o qual este Soquete é associado.

Requirements

Header ws2spi.h
Library Ws2.lib
Windows Embedded CE Windows CE .NET 4.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

WSPBind
WSPConnect
WSPGetSockOpt
WSPListen
WSPSelect
WSPSocket
WSPEventSelect