WSAAccept

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 e permite a transferir dos dados conexão.

Syntax

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

Parameters

  • s
    [no] Descritor identificando um Soquete que está aguardando conexões após um chamar a função de listen.
  • addr
    [out] Opcional ponteiro para uma reserva que recebe o endereço da entidade de conexão, como conhecidos a camada de comunicaçã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 do endereço addr.
  • lpfnCondition
    [no] Procedimento endereço instância da opcional, função condição Application-supplied que irão tomar uma decisão Accept/Reject com base em informações de chamador passado como parâmetros.
  • dwCallbackData
    [no] Dados de retorno de chamada passados voltar para o aplicativo como o valor da dwCallbackData parâmetro de função a condição. Este parâmetro não é interpretado pelo Soquetes do Windows.

Return Value

Se não houver erro, essa função retorna um valor de tipo SOCKET Esse é um descritor para a Soquete aceito. Se um erro ocorrer, será retornado um valor de INVALID_SOCKET, e um código de erro específicos podem ser recuperadas por chamado WSAGetLastError.

O inteiro referido por addrlen contém inicialmente a quantidade de espaço apontado pelo addr. Em retorno ele conterá o real comprimento em bytes do endereço retornado. A seguinte tabela mostra uma lista dos códigos de erro possível.

Código de erro Descrição

WSANOTINITIALISED

Um bem-sucedido chamar WSAStartup deve ocorrer antes de usar essa função.

WSAECONNREFUSED

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

WSAENETDOWN

Falha no subsistema da rede.

WSAEFAULT

O addrlen parâmetro é muito pequeno ou a addr Ou lpfnCondition não fazem parte de espaço de endereço de usuário.

WSAEINTR

O Soquete foi fechada.

WSAEINPROGRESS

Um bloqueio é chamar sockets do Windows (Winsock) em andamento.

WSAEINVAL

O escutar função não foi chamada prior to esta função, a valor de retorno de função a condição não é um válido um, ou qualquer maiúsculas e minúsculas onde o Soquete especificado é em um inválido estado.

WSAEMFILE

A fila for não vazia na entrada para esta função e houver há Soquete disponível descritores.

WSAENOBUFS

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

WSAENOTSOCK

O descritor não é um Soquete.

WSAEOPNOTSUPP

O relacionado Soquete não é um tipo que ofereça suporte ao serviço Connection-Oriented.

WSATRY_AGAIN

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

WSAEWOULDBLOCK

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

WSAEACCES

Tem o solicitação de conexão que foi oferecida 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 s e verifica-lo contra a função condição, desde a função condição for especificada (ou seja, não NULL). Se a função condição retorna CF_ACCEPT, WSAAccept Cria um novo Soquete. O Soquete recém-criado tem as mesmas propriedades que Soquete s, Incluindo assíncrono eventos registrados com WSAEventSelect. Se a função condição retorna CF_REJECT, WSAAccept Rejeita a solicitação de conexão. A função condição é executado no mesmo segmento como essa função e deve retornar tão logo seja possível. Se a decisão não pode ser feita imediatamente, a função condição deve retornar CF_DEFER para indicar que não foi feita nenhuma decisão e nenhuma ação sobre este solicitação de conexão deve ser seguida pelo provedor de serviço. Quando o aplicativo está pronto para executar ação no solicitação de conexão, ele irá invocar WSAAccept novamente e retornar o CF_ACCEPT ou CF_REJECT como uma valor de retorno da função de condição.

Um Soquete em modo padrão (bloqueio) será bloco até que uma conexão esteja presente quando um aplicativo chama WSAAccept e nenhuma conexão está pendente na fila.

Um Soquete em de não bloqueio modo falha com o erro WSAEWOULDBLOCK quando um aplicativo chama WSAAccept e nenhuma conexão está pendente na fila. Após WSAAccept é bem-sucedida e retorna um novo identificador Soquete, Soquete a nova não pode ser usado para aceitar qualquer mais conexões. O original Soquete permanece aberto e ouve para solicitações nova conexão.

O addr parâmetro é um parâmetro de resultados que é concluído com o endereço da entidade de conexão, como conhecidos a camada de comunicação. O formato exato das addr parâmetro é determinado pelo família de endereços no qual a comunicação está ocorrendo. O addrlen parâmetro é um parâmetro value-Result; Ele deve conter inicialmente o quantidade de espaço apontado pelo addr. Em retorno, ele irá conter o real comprimento (em bytes) do endereço retornado. 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 vai ser concluídos, independentemente de se a função condição for especificada ou que ela retorna.

O protótipo do função callback é da seguinte maneira:

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

O ConditionFunc função é um espaço reservado de função callback de Application-supplied. O real função condição deve residir em um DLL ou aplicativo módulo. Ele é exportado no arquivo de definição módulo. Para obter mais informações, consulte Module-Definition File.

O lpCallerId parâmetro aponta para uma estrutura WSABUF que contém o endereço da entidade de conexão, onde seu Len parâmetro é o comprimento da reserva em bytes e seu buf parâmetro é um ponteiro para a reserva. O lpCallerData parâmetro é um parâmetro valor que contém dados qualquer usuário. As informações desses parâmetros são enviadas along with o solicitação de conexão. Se nenhuma identificação chamador ou dados chamador estiver disponível, o correspondente parâmetros 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 da estrutura de WSABUF apontado pelo lpCallerId aponta para uma estrutura sockaddr. O sockaddr estrutura é interpretada de acordo com o família de endereços (geralmente por conversão o sockaddr Para alguns tipo específico de família de endereços).

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

O lpCalleeData parâmetro é um parâmetro resultado usado pela função condição para fornecer dados usuário voltar para a entidade de conexã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 deve copiar up to lpCalleeData->Len bytes de dados em lpCalleeData->buf e, 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 deve 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 WSAAccept 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 WSAAccept chamar site por meio para a função condição. Isso também 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 winsock2.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

accept (Windows Sockets)
bind (Windows Sockets)
connect (Windows Sockets)
getsockopt (Windows Sockets)
listen
select
sockaddr
socket (Windows Sockets)
WSAConnect
WSAEventSelect
WSAGetLastError
WSAStartup