Windows Sockets: Informações preliminares
Este artigo explica a natureza e a finalidade do Windows Sockets. O artigo também:
A especificação do Windows Sockets define uma interface de programação de rede compatível com binário para o Microsoft Windows. Os Windows Sockets 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 do Windows Sockets permite que seu aplicativo se comunique em qualquer rede que esteja em conformidade com a API do Windows Sockets. No Win32, os Windows Sockets fornecem acesso thread-safe.
Muitos fornecedores de software de rede dão suporte ao Windows Sockets em protocolos de rede, incluindo o Protocolo TCP/IP, o XNS (Sistema de Rede Xerox), o protocolo DECNet da Digital Equipment Corporation, o IPX/SPX (Troca de Pacotes de Internet/Troca de Pacotes Sequenciada 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 o Windows Sockets fornecendo sua própria versão da DLL (biblioteca de vínculo dinâmico) que implementa o Windows Sockets. Exemplos de aplicativos comerciais escritos com Windows Sockets incluem servidores Windows X, emuladores de terminal e sistemas de email.
Observação
A finalidade do Windows Sockets é 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 MFC (Biblioteca Microsoft Foundation Class) dá suporte à programação com a API do Windows Sockets fornecendo duas classes. Uma dessas classes, CSocket
, fornece um alto nível de abstração para simplificar a programação de comunicações de rede.
A especificação do Windows Sockets – Windows Sockets: Uma Interface Aberta para Computação de Rede no 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 gratuitamente para uso. O modelo de programação de soquetes dá suporte a um "domínio de comunicação" atualmente, usando o conjunto de protocolos IP. A especificação está disponível no SDK do Windows.
Dica
Como os soquetes usam o conjunto de protocolos IP, eles são a rota preferencial para aplicativos que dão suporte às comunicações da Internet na "infovia".
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, 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 conjunto de protocolos IP.
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).
Há dois tipos de soquetes disponíveis:
soquetes de fluxo
Os soquetes de fluxo fornecem um fluxo de dados sem limites de registro: um fluxo de bytes. Os fluxos têm a garantia de serem entregues e serem sequenciados corretamente 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. "Não duplicado" 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 Windows Sockets: soquetes de fluxo e Windows Sockets: 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 Windows Sockets.
Uso para Soquetes
Soquetes são altamente úteis em pelo menos três contextos de comunicação:
Modelos de cliente/servidor.
Cenários ponto a ponto, como aplicativos de mensagens.
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 que não sejam MFC, consulte Windows Sockets: Ordem de byte.
Para obter mais informações, consulte Especificação do Windows Sockets: ntohs, ntohl, htons, htonl. Confira também os seguintes tópicos: