WSASocket
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:
|
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