WSPConnect
9/8/2008
Essa função estabelece uma conexão para um ponto e troca dados conectar.
Syntax
int WSPConnect(
SOCKET s,
const struct sockaddr FAR* name,
int namelen,
LPWSABUF lpCallerData,
LPWSABUF lpCalleeData,
LPQOS lpSQOS,
LPQOS lpGQOS,
LPINT lpErrno
);
Parameters
- s
[no] Descritor identificando um Soquete desconectado.
- Nome
[no] Nome do outro computador na rede para que o Soquete é estar conectado.
- namelen
[no] Comprimento das Nome.
- lpCallerData
[no] Ponteiro para dados de usuário que deve ser transferida para outro computador na rede durante o estabelecimento conexão.
- lpCalleeData
[out] Ponteiro para uma reserva para que qualquer usuário dados recebidos de outro computador na rede durante o estabelecimento conexão podem ser copiados.
- lpSQOS
[no] Reservado.
- lpGQOS
[no] Reservado.
- lpErrno
[out] Ponteiro para o código de erro.
Return Value
Se não houver erro, essa função retornará zero. Caso contrário, ele retorna SOCKET_ERROR e um código de erro específico está disponível em lpErrno.
Observação
A versão Windows Embedded CE desta função não suporte a troca de dados no tempo de conexão para o provedor serviço usar como padrão.O valor usar como padrão para lpCalleeData e lpCallerData deve ser NULL.
Em um bloqueio Soquete, o valor de retorno indica êxito ou falha da tentativa de conexão. Se a código de erro de retorno indica falha tentativa de conexão (that is, WSAECONNREFUSED, WSAENETUNREACH, WSAETIMEDOUT) o cliente Windows Sockets SPI pode chamar WSPConnect novamente para o mesmo Soquete.
A seguinte tabela mostra os códigos de erro possível.
Valor de erro | Descrição |
---|---|
WSAENETDOWN |
falha no subsistema de rede. |
WSAEADDRINUSE |
Endereço local do Soquete já está em uso e a Soquete não foi marcado para Permitir reutilização endereço com SO_REUSEADDR. Esse erro geralmente ocorre no tempo de BIND, mas pode ser atrasada até que essa função se a BIND Era um endereço curinga parcialmente (envolvendo ADDR_ANY) e se um endereço específico precisa ser confirmada no tempo desta função. |
WSAEINPROGRESS |
Bloquear chamar Soquetes do Windows é em andamento ou o serviço provedor ainda é processamento um função callback. |
WSAEALREADY |
Nonblocking WSPConnect chamar é em andamento na Soquete especificado. Em ordem para preservar compatibilidade com versões anteriores, esse erro é relatado como WSAEINVAL à aplicativos 1.1 sockets do Windows (Winsock) que link ao arquivo Winsock.dll ou Wsock32.dll. |
WSAEADDRNOTAVAIL |
Endereço remoto não é um válido endereço (por exemplo, ADDR_ANY). |
WSAEAFNOSUPPORT |
Endereços de família especificado não podem ser usados com este Soquete. |
WSAECONNREFUSED |
Tentar conectar foi rejeitada. |
WSAEFAULT |
Nome ou o namelen parâmetro não é um válido parte espaço de endereço de usuário, o namelen parâmetro é muito pequeno, o tamanho do buffer para lpCalleeData é muito pequeno, ou o tamanho do buffer para lpCallerData é muito grande. |
WSAEINVAL |
Parâmetro s é um Soquete de escuta. |
WSAEISCONN |
Soquete já está conectados (orientado à conexão soquetes somente). |
WSAENETUNREACH |
Rede não pode ser alcançada a partir este hospedar nesse tempo. |
WSAENOBUFS |
Nenhuma espaço do buffer está disponível. O Soquete não pode ser conectada. |
WSAENOTSOCK |
O descritor não é um Soquete. |
WSAEOPNOTSUPP |
Especificações de fluxo não podem ser satisfeitas. |
WSAEPROTONOSUPPORT |
O lpCallerData Não é augment com suporte pelo provedor de serviço. |
WSAETIMEDOUT |
Tentativa de conexão atingiu o tempo limite sem estabelecer uma conexão. |
WSAEWOULDBLOCK |
Soquete está marcado como de não bloqueio e a conexão não pode ser concluída imediatamente. É possível selecionar a Soquete usando o WSPSelect função enquanto ele está se conectando usando o WSPSelect função para selecioná-lo para gravação. |
WSAEACCES |
Tentar conectar soquete de datagrama para transmitir endereço falha porque WSPSetSockOpt SO_BROADCAST não está habilitado. |
Remarks
Essa função é usada para criar uma conexão para o destino especificado e para executar um número de outras operações auxiliares que ocorrer no tempo conectar as well. Se o Soquete, s, é desacoplado, os valores são atribuídos para o local exclusivo associação, o sistema e o Soquete está marcada como ligado.
Para os soquetes orientado à conexão (por exemplo, tipo SOCK_STREAM), um conexão ativa é iniciado para o hospedar especificado usando Nome (um endereço no espaço de nome da Soquete. (Para obter uma descrição detalhada, consulte WSPBind.) Quando esse chamar é concluído com êxito, o Soquete está pronto para enviar e receber dados. Se o membro endereço das Nome estrutura é todos os zeros, WSPConnect retornará o Erro WSAEADDRNOTAVAIL. Qualquer tentativa reconectar um conexão ativa falhará com o código de erro WSAEISCONN.
Para Connection-Oriented, de não bloqueio soquetes geralmente não é possível completo imediatamente a conexão. Em tais uma maiúsculas e minúsculas, essa função retorna com o erro WSAEWOULDBLOCK, mas a operação continua. Quando o resultado de êxito ou falha se torna conhecido, ele pode ser informado de várias maneiras dependendo como o cliente registra para notificação. Se o cliente usa WSPSelect, o sucesso é relatado na writefds Definir e falha é relatado na exceptfds Defina. Se o cliente usa WSPEventSelect, a notificação é anunciada com o código de erro e FD_CONNECT associado com o FD_CONNECT indica um motivo específico para falha ou sucesso.
Para um sem conexão Soquete (por exemplo, tipo SOCK_DGRAM), a operação executada por WSPConnect é estabelecer um endereço destino usar como padrão o Soquete pode ser usado com Enviar orientado a conexões subseqüente e receber (operaçõesWSPSend, WSPRecv). Quaisquer datagramas recebidos de um endereço diferente de endereço de destino especificado serão descartados. Se o membro endereço das Nome estrutura é todos os zeros, de Soquete será desconectada — o remoto usar como padrão endereço será indeterminado, caso WSPSend e WSPRecv Chamadas retornarão o código de erro WSAENOTCONN. No entanto, WSPSendTo e WSPRecvFrom ainda pode ser usado. O destino usar como padrão pode ser alterado pelo simplesmente chamado WSPConnect Novamente, mesmo se já estiver conectado a Soquete. Quaisquer datagramas enfileirado para confirmação serão descartados se Nome é diferente da anterior WSPConnect.
Para sem conexão soquetes, Nome Pode indicar qualquer válido endereço, incluindo um transmitir endereço. No entanto, para conectar a um transmitir endereço, deve ter um Soquete WSPSetSockOpt SO_BROADCAST habilitado. Caso contrário, WSPConnect falhará com o código de erro WSAEACCES.
Em sem conexão soquetes, trocar de usuário - a - usuário dados não é possível e a correspondente parâmetros serão ignorados silenciosamente.
O cliente Windows Sockets SPI é responsável por alocando qualquer espaço memória apontado diretamente ou indiretamente por qualquer um dos parâmetros-Especifica.
O lpCallerData é um parâmetro valor que contém os dados usuário a ser enviado along with o solicitação de conexão. Se lpCallerData é NULL, não dados usuário serão passados para o ponto. O lpCalleeData é um parâmetro resultado que fizer referência quaisquer dados usuário voltar passado de outro computador na rede como parte do estabelecimento de conexão. O lpCalleeData-> Len Contém inicialmente o comprimento da reserva alocados pelo cliente de Windows Sockets SPI e apontado pelo lpCalleeData-> buf. O lpCalleeData-> Len será definido como zero se não dados usuário tem sido passados voltar. O lpCalleeData informações será válido quando a operação conexão está completo. Para bloqueio soquetes, este será quando o WSPConnect função retorna. Para de não bloqueio soquetes, este será após a notificação FD_CONNECT ocorreu. Se lpCalleeData é NULL, não dados usuário serão passados voltar. O formato exato dos dados de usuário é específico para o família de endereços que o Soquete pertence e / ou os aplicativos envolvidos.
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
WSPAccept
WSPBind
WSPGetSockName
WSPGetSockOpt
WSPSocket
WSPSelect
WSPEventSelect
WSPEnumNetworkEvents