Windows Sockets: soquetes de fluxo
Este artigo descreve os soquetes de fluxo, um dos dois tipos de soquete windows disponíveis. (Outro tipo é soquete de datagrama.)
Soquetes de fluxo preveem um fluxo de dados sem limites do registro: um fluxo de bytes que pode ser bidirecional (o aplicativo é concluído - duplex: pode transmitir e recebidos pelo soquete). Os fluxos podem ser confiáveis em para entregar dados colocados em sequência, unduplicated. (“Colocado em sequência” significa que os pacotes são entregues na ordem enviado. “Unduplicated” significa que você obtém um pacote específico apenas uma vez.) O recebimento de mensagens do fluxo é garantido, e os fluxos são bem-adequados para tratar grandes quantidades de dados.
A camada de transporte de rede pode dividir ou agrupar dados em pacotes de tamanho razoável. A classe de CSocket tratará o uso de maiúsculas e minúsculas e a desempacotamento para você.
Os fluxos são baseados em conexões explícitas: o soquete A solicita uma conexão ao soquete B; o soquete B aceita ou descarta a solicitação de conexão.
Uma chamada telefônica fornece uma boa analogia para um fluxo. Em condições normais, a parte receptora ouve-se o que informe na ordem em que o informa, sem duplicar ou perda. Soquetes de fluxo são apropriadas, por exemplo, para implementações como FTP (FTP), o que facilita transferir ASCII ou arquivos binários do tamanho arbitrário.
Soquetes de fluxo são preferíveis a soquetes de datagrama quando os dados devem ser garantido para chegar e quando o tamanho dos dados for maior. Para obter mais informações sobre os soquetes de fluxo, consulte a especificação de soquetes do windows. A especificação está disponível em Windows SDK.
Usar soquetes de fluxo pode ser superior aos aplicativos projetados para usar um soquete de datagrama para transmitir a todos os soquetes pull na rede como
O modelo completo dependerá dos problemas de inundação de rede (ou “tempestade”).
O client-server model adotado subsequentemente é mais eficiente.
O modelo de fluxo fornece a transferência de dados confiável, onde o modelo de datagrama não.
O modelo final aproveita a capacidade de se comunicar entre Unicode e aplicativos de soquete ANSI que classificam CArchive emprestam para classificar CSocket.
Dica
Se você usar a classe CSocket, você deve usar um fluxo.Uma asserção de MFC falhará se você especificar o tipo de soquete como SOCK_DGRAM.