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 descreve soquetes de fluxo, um dos dois tipos de soquetes do Windows disponíveis. (O outro tipo é o soquete de datagrama.)
Os soquetes de fluxo fornecem um fluxo de dados sem limites de registros: um fluxo de bytes que pode ser bidirecional (o aplicativo é duplex completo: ele pode transmitir e receber por meio do soquete). Os fluxos podem ser confiados para fornecer dados sequenciados e não duplicados. ("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.) O recebimento de mensagens em fluxo é garantido, e streams são adequados para lidar com grandes quantidades de dados.
A camada de transporte de rede pode dividir ou agrupar dados em pacotes de tamanho razoável. A classe CSocket
manipulará o empacotamento e a descompactação para você.
Os fluxos são baseados em conexões explícitas: o soquete A solicita uma conexão com o soquete B; O soquete B aceita ou rejeita a solicitação de conexão.
Uma chamada telefônica fornece uma boa analogia para um fluxo. Em circunstâncias normais, a parte receptora ouve o que você diz na ordem em que você diz, sem duplicação ou perda. Soquetes de fluxo são apropriados, por exemplo, para implementações como o FTP (Protocolo de Transferência de Arquivo), que facilita a transferência de ARQUIVOS ASCII ou binários de tamanho arbitrário.
Soquetes de fluxo são preferíveis aos soquetes de datagrama quando os dados devem ser garantidos para chegar e quando o tamanho dos dados é grande. Para obter mais informações sobre soquetes de fluxo, consulte a especificação de Soquetes do Windows. A especificação está disponível no SDK do Windows.
O uso de soquetes de fluxo pode ser superior em aplicativos projetados para usar um soquete de datagrama para transmitir para todos os soquetes de recebimento na rede porque
O modelo de transmissão está sujeito a problemas de inundação de rede (ou "tempestade").
O modelo cliente-servidor adotado posteriormente é mais eficiente.
O modelo de fluxo fornece transferência de dados confiável, enquanto o modelo de datagrama não o faz.
O modelo final aproveita a capacidade de se comunicar entre aplicativos de soquete Unicode e ANSI que a classe CArchive empresta à classe CSocket.
Observação
Se você usar a classe
CSocket
, deverá usar um fluxo. Uma asserção MFC falhará se você especificar o tipo de soquete como SOCK_DGRAM.
Consulte também
Soquetes do Windows no MFC
Soquetes do Windows: Plano de fundo