Partilhar via


Windows Sockets: Contexto

Este artigo explica a natureza e a finalidade do Windows Sockets. O artigo também menciona:

A especificação 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 na 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 para Windows. O uso do Windows Sockets permite que seu aplicativo se comunique através de qualquer rede que esteja em conformidade com a API do Windows Sockets. No Win32, o Windows Sockets fornece segurança de thread.

Muitos fornecedores de software de rede suportam Windows Sockets sob protocolos de rede, incluindo TCP/IP (Transmission Control Protocol/Internet Protocol), Xerox Network System (XNS), DECNet da Digital Equipment Corporation, IPX/SPX (Internet Packet Exchange/Sequenced Packed Exchange) da Novell Corporation e outros. Embora a atual especificação 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 biblioteca de vínculo dinâmico (DLL) que implementa o Windows Sockets. Exemplos de aplicativos comerciais escritos com Windows Sockets incluem servidores X Windows, emuladores de terminal e sistemas de correio eletrônico.

Observação

O objetivo do Windows Sockets é abstrair a rede subjacente para que você não precise ter conhecimento sobre essa rede e para que seu aplicativo possa ser executado em qualquer rede que ofereça suporte a soquetes. Consequentemente, esta documentação não discute os detalhes dos protocolos de rede.

O Microsoft Foundation Class Library (MFC) suporta 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 sua programação de comunicações de rede.

A especificação 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 gratuitamente para uso. O modelo de programação de soquetes suporta um "domínio de comunicação" atualmente, usando o Internet Protocol Suite. A especificação está disponível no SDK do Windows.

Sugestão

Como os soquetes usam o Internet Protocol Suite, eles são a rota preferida para aplicativos que suportam comunicações via Internet na "rodovia da informação".

Definição de um soquete

Um soquete é um ponto de extremidade de comunicação — um objeto através do qual um aplicativo 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 tomadas 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. É garantido que os fluxos serão entregues e serão corretamente sequenciados e não duplicados.

  • Soquetes de datagrama

    Os soquetes de datagrama suportam um fluxo de dados orientado a registros que não tem garantia de ser entregue e não pode ser sequenciado como enviado ou não duplicado.

"Sequenciado" significa que os pacotes são entregues na ordem enviada. "Não duplicado" significa que você recebe um pacote específico apenas uma vez.

Observação

Em alguns protocolos de rede, como o XNS, os fluxos podem ser orientados a gravações, como fluxos de registros em vez de fluxos de bytes. No entanto, sob o 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 que tipo de soquete usar em quais situações, consulte Windows Sockets: Stream Sockets e Windows Sockets: Datagram Sockets.

O tipo de dados SOCKET

Cada objeto de soquete MFC encapsula um identificador para um objeto Windows Sockets. O tipo de data desse identificador é SOCKET. Um SOCKET manipulador é análogo ao manipulador de uma janela. As classes de soquete MFC fornecem operações na alça encapsulada.

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.

Usos para soquetes

Os soquetes são muito úteis em pelo menos três contextos de comunicação:

  • Modelos cliente/servidor.

  • Cenários entre pares, como aplicações de mensagens.

  • Fazer chamadas de procedimento remoto (RPC) fazendo com que o aplicativo recetor interprete uma mensagem como uma chamada de função.

Sugestão

O caso ideal para usar soquetes MFC é quando você está escrevendo ambas as extremidades da comunicação: usando MFC em ambas as extremidades. Para obter mais informações sobre este tópico, incluindo como gerenciar o caso quando você está se comunicando com aplicativos que não são MFC, consulte Windows Sockets: Byte Ordering.

Para obter mais informações, consulte a Especificação dos Windows Sockets: ntohs, ntohl, htons, htonl. Consulte também os seguintes tópicos:

Ver também

Windows Sockets no MFC