WSASocket

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função cria um Soquete que está ligado a um provedor serviço transporte específicos.

Syntax

SOCKET WSASocket(
  int af,
  int type,
  int protocol,
  LPWSAPROTOCOL_INFO lpProtocolInfo,
  GROUP g,
  DWORD dwFlags
);

Parameters

  • AF
    [no] Endereço família especificação.
  • tipo
    [no] Digite especificação para o novo Soquete.
  • protocolo
    [no] Protocolo a ser usado com o Soquete específica para o família de endereços indicado.
  • lpProtocolInfo
    [no] Ponteiro para um WSAPROTOCOL_INFO estrutura que define as características do Soquete a ser criado. Para obter mais informações sobre WSAPROTOCOL_INFO, consulte Comentários.
  • g
    [no] Reservado.
  • dwFlags
    [no] Sinalizador que especifica o atributo Soquete.

Return Value

Se não houver erro, essa função retornará um descritor referenciar o novo Soquete. 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.

Observação

Essa descrição código de erro é específicas da Microsoft.A seguinte tabela mostra uma lista dos códigos de erro possível.

Código de erro Descrição

WSANOTINITIALISED

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

WSAENETDOWN

Falha no subsistema da rede.

WSAEAFNOSUPPORT

O família de endereços especificado não é com suporte.

WSAEINPROGRESS

Um bloqueio é chamar sockets do Windows (Winsock) em andamento, ou o serviço provedor ainda é processamento um função callback.

WSAEMFILE

Há mais descritores Soquete estiver disponível.

WSAENOBUFS

Nenhuma espaço do buffer está disponível. O Soquete não pode ser criado.

WSAEPROTONOSUPPORT

O protocolo especificado não é com suporte.

WSAEPROTOTYPE

O protocolo especificado é o tipo errado para este Soquete.

WSAESOCKTNOSUPPORT

Não é o tipo especificado Soquete com suporte in este família de endereços.

WSAEINVAL

Esse valor é Verdadeiro para qualquer um das seguinte condições:

  • O parâmetro g especificado não é válido.
  • O WSAPROTOCOL_INFO estrutura que lpProtocolInfo Aponta para está incompleto, o conteúdo inválido, ou a WSAPROTOCOL_INFO estrutura já foi usada em um duplicado anterior operação Soquete.
  • Os valores especificados para os membros do triplo Soquete < af, tipo e protocolo > São individualmente com suporte, mas a combinação fornecida não é.

WSAEFAULT

O lpProtocolInfo argumento não está em um válido parte espaço de endereço o processo.

WSAINVALIDPROVIDER

O provedor serviço retornou uma versão Other Than 2.2.

WSAINVALIDPROCTABLE

O provedor serviço retornou um inválido ou tabela procedimento incompleto para o WSAStartup.

Remarks

Essa função faz com que um descritor Soquete e qualquer relacionado recursos a ser alocada e associado com um provedor serviço transporte. Por padrão, o Soquete não terá um atributo sobreposto. Se lpProtocolInfo é NULL, ws2.dll usa o primeiro (três parâmetrosAF, tipo, e protocolo) para determinar qual provedor de serviços é usado, selecionando o primeiro provedor transporte capaz para suporte a família de endereços stipulated, Soquete tipo e valores protocolo. Se a pasta lpProtocolInfo não é NULL, o Soquete será ligado para o provedor associado com o indicado WSAPROTOCOL_INFO estrutura. Nesta instância, o aplicativo pode fornecer o manifesto constante FROM_PROTOCOL_INFO como o valor para qualquer um dos AF, tipo, ou protocolo. Isso indica que o correspondente valores a partir de indicado WSAPROTOCOL_INFO (estruturaiAddressFamily, iSocketType, e iProtocol) devem ser adotada. Em qualquer maiúsculas e minúsculas, os valores fornecidos para AF, tipo, e protocolo São fornecidos para o provedor serviço transporte mantidos inalterados.

Em Windows Embedded CE e Windows NT, a camada sockets do Windows (Winsock) examina somente o dwCatalogEntryId membro das WSAPROTOCOL_INFO estrutura para determinar qual provedor deve ser usado. Portanto, se Não é lpProtocolInfo NULL, o CatalogEntryId membro das WSAPROTOCOL_INFO estrutura deve ser definida como identificação do catálogo do provedor de desejado. No entanto, porque a estrutura é passada em sua totalidade para o subjacente provedor, o provedor si pode tornar usar de outras informações dessa estrutura.

Ao selecionar um protocolo e seus provedor de serviços de suporte com base em AF, tipo, e protocolo, esse procedimento será somente escolher um protocolo de base ou um provedor encadear, não uma camada protocolo por si só. Camadas protocolo unchained não são consideradas tiverem correspondências parciais em tipo Ou AF Ambos. Ou seja, eles não levar a um código de erro de WSAEAFNOSUPPORT ou WSAEPROTONOSUPPORT, não se for encontrado nenhum protocolo adequado.

Observação

O manifesto constante AF_UNSPEC continua a ser definidas no arquivo de cabeçalho, mas seu uso é fortemente desencorajado, pois isso pode causar ambigüidade em interpretar o valor da protocolo parâmetro.

O dwFlags parâmetro pode ser usado para especificar os atributos do Soquete, usando o operador bit a bit OR com Sinalizadores específicos. A seguinte tabela mostra esses sinalizadores.

Sinalizador Descrição

WSA_FLAG_ OVERLAPPED

Este sinalizador fará com que um Soquete sobreposta a ser criado. Soquetes sobrepostos podem usar WSASend, WSASendTo, WSARecv, WSARecvFrom, e WSAIoctl para operações E/S sobrepostas, que permitem múltiplo operações para ser iniciada e em andamento simultaneamente. Todas as funções que permitem operação sobreposta também suporte nonoverlapped o uso em um Soquete sobreposto se os valores para parâmetros relacionado a operações sobrepostas é NULL.

MULTIPOINT_C_ROOT WSA_FLAG_

Indica que o Soquete criado será um c_root em uma sessão multiponto. Isso só é permitido se um avião controle raiz é indicado do protocolo WSAPROTOCOL_INFO estrutura.

MULTIPOINT_C_LEAF WSA_FLAG_

Indica que o Soquete criado será um c_leaf em um Multicast sessão. Isso só é permitido se XP1_SUPPORT_MULTIPOINT é indicada do protocolo WSAPROTOCOL_INFO estrutura.

MULTIPOINT_D_ROOT WSA_FLAG_

Indica que o Soquete criado será um d_root em uma sessão multiponto. Isso só é permitido se um avião dados raiz é indicado do protocolo WSAPROTOCOL_INFO estrutura. Consulte Multipoint e semântica Multicast para informações adicionais.

MULTIPOINT_D_LEAF WSA_FLAG_

Indica que o Soquete criado será um d_leaf em uma sessão multiponto. Isso só é permitido se XP1_SUPPORT_MULTIPOINT é indicada do protocolo WSAPROTOCOL_INFO estrutura.

Importante

Para multiponto soquetes, exatamente um dos sinalizadores WSA_FLAG_MULTIPOINT_C_ROOT ou WSA_FLAG_MULTIPOINT_C_LEAF deve ser especificado e exatamente um dos sinalizadores de WSA_FLAG_MULTIPOINT_D_ROOT ou WSA_FLAG_MULTIPOINT_D_LEAF deve ser especificado.

Soquetes orientado à conexão, como SOCK_STREAM fornecem conexões full-duplex e devem ser em um estado conectado para quaisquer dados podem ser enviados ou recebidos em-los. Uma conexão a outro Soquete é criado com uma conectar (Soquetes do Windows)/WSAConnect chamar. Depois de conectado, dados podem ser transferidos usando Enviar/WSASend e Recv/WSARecv Chamadas. Quando uma sessão for concluída, um closesocket chamar deve ser executada.

Os protocolos de comunicação usados para implementar um seguro, Soquete Connection-Oriented garantir que dados não é perdidos ou duplicados. Se dados para que o protocolo ponto a ponto tem espaço do buffer não podem ser transmitidos com êxito em um período de tempo razoável, a conexão será considerado chamadas quebradas e subseqüentes falhará com o código de erro definido como WSAETIMEDOUT.

Soquetes orientado a mensagem sem conexão permitem o envio e recebimento de datagramas de e para pontos arbitrários usando SendTo/WSASendTo e recvfrom/WSARecvFrom. Se tal um Soquete estiver conectado a um ponto específico, os datagramas podem ser enviados para esse ponto usando Enviar/WSASend e pode ser recebidas (somente) neste ponto usando Recv/WSARecv.

Suporte para os soquetes com tipo Processado não é exigido, mas serviço provedores são incentivados a suporte processado soquetes sempre que possível.

Observação

O interno provedores serviço que o material sistema operacional Windows Embedded CE não oferecem suporte a WSA_FLAG_MULTIPOINT_ sinalizadores ou a função WSAJoinLeaf.No entanto, terceiros pode implementar suas possui provedor e ter suporte para esta função se eles escolher.

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)
closesocket
connect (Windows Sockets)
getsockname (Windows Sockets)
getsockopt (Windows Sockets)
ioctlsocket
listen
recv
recvfrom
select
send
sendto
setsockopt (Windows Sockets)
shutdown
WSAConnect
WSAGetLastError
WSAIoctl
WSARecv
WSARecvFrom
WSASend
WSASendTo
WSAStartup