Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo explica a natureza e a finalidade dos Soquetes do Windows. O artigo também:
A especificação do Windows Sockets define uma interface de programação de rede compatível com binários para o Microsoft Windows. Os Soquetes do Windows são baseados na implementação de soquetes UNIX no Berkeley Software Distribution (BSD, versão 4.3) da Universidade da Califórnia em Berkeley. A especificação inclui rotinas de soquete no estilo BSD e extensões específicas do Windows. O uso de Soquetes do Windows permite que seu aplicativo se comunique entre qualquer rede que esteja em conformidade com a API de Soquetes do Windows. No Win32, os Windows Sockets fornecem acesso thread-safe.
Muitos fornecedores de software de rede dão suporte aos Sockets do Windows em protocolos de rede, incluindo Protocolo de Controle de Transmissão/Protocolo de Internet (TCP/IP), Sistema de Rede Xerox (XNS), protocolo DECNet da Digital Equipment Corporation, Intercâmbio de Pacotes da Internet/Intercâmbio de Pacotes Sequenciados (IPX/SPX) da Novell Corporation e outros. Embora a especificação atual do Windows Sockets defina a abstração de soquetes para TCP/IP, qualquer protocolo de rede pode estar em conformidade com os Soquetes do Windows fornecendo sua própria versão da DLL (biblioteca de vínculo dinâmico) que implementa os Soquetes do Windows. Exemplos de aplicativos comerciais escritos com soquetes do Windows incluem servidores X Windows, emuladores de terminal e sistemas de email eletrônicos.
Observação
A finalidade dos Soquetes do Windows é abstrair a rede subjacente para que você não precise ter conhecimento sobre essa rede e, portanto, seu aplicativo possa ser executado em qualquer rede que dê suporte a soquetes. Consequentemente, essa documentação não discute os detalhes dos protocolos de rede.
A Biblioteca de Classes do Microsoft Foundation (MFC) dá suporte à programação com a API de Soquetes do Windows fornecendo duas classes. Uma dessas classes fornece CSocketum alto nível de abstração para simplificar a programação de comunicações de rede.
A especificação do Windows Sockets, Windows Sockets: An Open Interface for Network Computing under Microsoft Windows, agora na versão 1.1, foi desenvolvida como um padrão de rede aberta por um grande grupo de indivíduos e corporações na comunidade TCP/IP e está disponível livremente para uso. O modelo de programação de soquetes dá suporte a um "domínio de comunicação" atualmente, usando o Internet Protocol Suite. A especificação está disponível no SDK do Windows.
Dica
Como os soquetes usam o Internet Protocol Suite, eles são a rota preferencial para aplicativos que dão suporte a comunicações com a Internet na "rodovia de informações".
Definição de um soquete
Um soquete é um ponto de extremidade de comunicação – um objeto por meio do qual um aplicativo do Windows Sockets envia ou recebe pacotes de dados em uma rede. Um soquete tem um tipo e está associado a um processo em execução e pode ter um nome. Atualmente, os soquetes geralmente trocam dados apenas com outros soquetes no mesmo "domínio de comunicação", que usa o Internet Protocol Suite.
Ambos os tipos de soquetes são bidirecionais; são fluxos de dados que podem ser comunicados em ambas as direções simultaneamente (full-duplex).
Dois tipos de soquete estão disponíveis:
soquetes de fluxo
Os soquetes de fluxo fornecem um fluxo de dados sem limites de registro: um fluxo de bytes. Há garantia de que os fluxos sejam entregues e sejam corretamente sequenciados e não duplicados.
Soquetes de datagrama
Os soquetes de datagram dão suporte a um fluxo de dados orientado a registro que não tem garantia de ser entregue e pode não ser sequenciado como enviado ou duplicado.
"Sequenciado" significa que os pacotes são entregues na ordem enviada. "Sem duplicação" significa que você obtém um pacote específico apenas uma vez.
Observação
Em alguns protocolos de rede, como XNS, os fluxos podem ser orientados a registros, como fluxos de registros em vez de fluxos de bytes. No entanto, no protocolo TCP/IP mais comum, os fluxos são fluxos de bytes. O Windows Sockets fornece um nível de abstração independente do protocolo subjacente.
Para obter informações sobre esses tipos e qual tipo de soquete usar em quais situações, consulte Os Soquetes do Windows: Soquetes de Fluxo e Soquetes do Windows: Soquetes de Datagram.
O tipo de dados SOCKET
Cada objeto de soquete do MFC encapsula um identificador em um objeto do Windows Sockets. O tipo de dados desse identificador é SOCKET. Um identificador SOCKET é análogo ao HWND de uma janela. As classes de soquete do MFC fornecem operações no identificador encapsulado.
O tipo de dados SOCKET é descrito em detalhes no SDK do Windows. Consulte "Tipo de dados de soquete e valores de erro" em Soquetes do Windows.
Usos para soquetes
Soquetes são altamente úteis em pelo menos três contextos de comunicação:
Modelos de cliente/servidor.
Cenários entre pares, como aplicativos de mensagens de texto.
Fazer chamadas de procedimento remoto (RPC) fazendo com que o aplicativo receptor interprete uma mensagem como uma chamada de função.
Dica
O caso ideal para usar soquetes do MFC é quando você está gravando em ambas as extremidades da comunicação: usando o MFC em ambas as extremidades. Para obter mais informações sobre este tópico, incluindo como gerenciar o caso quando você estiver se comunicando com aplicativos não MFC, consulte Os Soquetes do Windows: Ordenação de Bytes.
Para obter mais informações, consulte Especificação do Windows Sockets: ntohs, ntohl, htons, htonl. Além disso, consulte os seguintes tópicos: