Partager via


Windows Sockets : sockets de flux

Cet article décrit les sockets de flux, l’un des deux types de sockets Windows disponibles. (L’autre type est le socket de datagramme.)

Les sockets de flux fournissent un flux de données sans limites d’enregistrement : flux d’octets pouvant être bidirectionnel (l’application est entièrement duplex : elle peut transmettre et recevoir via le socket). Les flux peuvent être utilisés pour fournir des données séquencées et non séquencées. (« Séquencement » signifie que les paquets sont remis dans l’ordre envoyé. « Non dédupliqué » signifie que vous obtenez un paquet particulier une seule fois.) La réception des messages de flux est garantie et les flux conviennent parfaitement à la gestion de grandes quantités de données.

La couche de transport réseau peut décomposer ou regrouper des données en paquets de taille raisonnable. La CSocket classe gère l’emballage et le déballage pour vous.

Les flux sont basés sur des connexions explicites : socket A demande une connexion au socket B ; socket B accepte ou rejette la demande de connexion.

Un appel téléphonique fournit une bonne analogie pour un flux. Dans des circonstances normales, la partie qui reçoit entend ce que vous dites dans l’ordre où vous le dites, sans duplication ni perte. Les sockets de flux sont appropriés, par exemple, pour les implémentations telles que le protocole FTP (File Transfer Protocol), qui facilite le transfert de fichiers ASCII ou binaires de taille arbitraire.

Les sockets de flux sont préférables aux sockets datagramme lorsque l'arrivée des données doit être nécessairement garanti et que la taille des données est importante. Pour plus d’informations sur les sockets de flux, consultez la spécification Windows Sockets. La spécification est disponible dans le Kit de développement logiciel (SDK) Windows.

L'utilisation de sockets de flux peut être supérieure aux applications conçues pour utiliser un socket de datagramme pour la distribution à tous les sockets destinataires sur le réseau.

  • Le modèle de diffusion est soumis à des problèmes d’inondation réseau (ou de tempête).

  • Le modèle client-serveur adopté par la suite est plus efficace.

  • Le modèle de flux fournit un transfert de données fiable, où le modèle de datagramme ne le fait pas.

  • Le modèle final tire parti de la capacité de communication entre les applications de socket Unicode et ANSI que la classe CArchive prête à la classe CSocket.

    Remarque

    Si vous utilisez la classe CSocket, vous devez utiliser un flux. Une assertion MFC échoue si vous spécifiez le type de socket comme SOCK_DGRAM.

Voir aussi

Sockets de Windows dans MFC
Sockets de Windows : contexte