Windows Sockets : Présentation
Cet article explique la nature et l’objectif des sockets Windows. L’article est également le suivant :
Décrit le type de données de handle SOCKET.
La spécification Windows Sockets définit une interface de programmation réseau compatible binaire pour Microsoft Windows. Windows Sockets est basé sur l’implémentation des sockets UNIX dans la distribution de logiciels De Berkeley (BSD, version 4.3) de l’Université de Californie à Berkeley. La spécification inclut des routines de socket de type BSD et des extensions spécifiques à Windows. L’utilisation de Windows Sockets permet à votre application de communiquer sur n’importe quel réseau conforme à l’API Windows Sockets. Sur Win32, les sockets Windows fournissent la sécurité des threads.
De nombreux fournisseurs de logiciels réseau prennent en charge les sockets Windows sous protocoles réseau, notamment le protocole TCP/IP (Transmission Control Protocol/Internet Protocol), le système réseau DeC (XNS), le protocole DECNet de Digital Equipment Corporation, l’échange de paquets Internet de Novell Corporation/Sequenced Packed Exchange (IPX/SPX) et d’autres. Bien que la spécification Windows Sockets actuelle définit l’abstraction de sockets pour TCP/IP, tout protocole réseau peut se conformer aux sockets Windows en fournissant sa propre version de la bibliothèque de liens dynamiques (DLL) qui implémente les sockets Windows. Parmi les exemples d’applications commerciales écrites avec Windows Sockets, citons les serveurs X Windows, les émulateurs de terminal et les systèmes de messagerie électronique.
Remarque
L’objectif des sockets Windows est d’extraire le réseau sous-jacent afin que vous n’ayez pas à connaître ce réseau et que votre application puisse s’exécuter sur n’importe quel réseau prenant en charge les sockets. Par conséquent, cette documentation ne traite pas des détails des protocoles réseau.
Microsoft Foundation Class Library (MFC) prend en charge la programmation avec l’API Windows Sockets en fournissant deux classes. L’une de ces classes fournit CSocket
un niveau élevé d’abstraction pour simplifier la programmation de vos communications réseau.
La spécification Windows Sockets, Windows Sockets : An Open Interface for Network Computing under Microsoft Windows, now at version 1.1, a été développée en tant que norme de mise en réseau ouverte par un grand groupe d’individus et d’entreprises dans la communauté TCP/IP et est librement disponible pour une utilisation. Le modèle de programmation de sockets prend actuellement en charge un « domaine de communication » à l’aide de la suite de protocole Internet. La spécification est disponible dans le Kit de développement logiciel (SDK) Windows.
Conseil
Étant donné que les sockets utilisent internet Protocol Suite, ils sont l’itinéraire préféré pour les applications qui prennent en charge les communications Internet sur l'« autoroute de l’information ».
Définition d’un socket
Un socket est un point de terminaison de communication : objet via lequel une application Windows Sockets envoie ou reçoit des paquets de données sur un réseau. Un socket a un type et est associé à un processus en cours d’exécution, et il peut avoir un nom. Actuellement, les sockets échangent généralement des données uniquement avec d’autres sockets dans le même « domaine de communication », qui utilise la suite de protocole Internet.
Les deux types de sockets sont bidirectionnels ; il s’agit de flux de données qui peuvent être communiqués simultanément dans les deux sens (full-duplex).
Deux types de sockets sont disponibles :
Sockets de flux
Les sockets de flux fournissent un flux de données sans limites d’enregistrement : flux d’octets. Flux sont garanties d’être remises et d’être correctement séquencées et non séquencées.
Sockets datagramme
Les sockets de datagramme prennent en charge un flux de données orienté enregistrement qui n’est pas garanti pour être remis et qui ne peut pas être séquenifié comme envoyé ou non.
« Séquencé » signifie que les paquets sont remis dans l’ordre envoyé. « Non dédupliqué » signifie que vous obtenez un paquet particulier une seule fois.
Remarque
Sous certains protocoles réseau, tels que XNS, les flux peuvent être orientés vers les enregistrements, comme les flux d’enregistrements plutôt que les flux d’octets. Toutefois, sous le protocole TCP/IP le plus courant, les flux sont des flux d’octets. Windows Sockets fournit un niveau d’abstraction indépendant du protocole sous-jacent.
Pour plus d’informations sur ces types et le type de socket à utiliser dans les situations dans lesquelles vous pouvez utiliser, consultez Sockets Windows : Sockets de flux et Sockets Windows : Sockets datagram.
Type de données SOCKET
Chaque objet de socket MFC encapsule un handle à un objet Windows Sockets. Le type de données de ce handle est SOCKET. Un handle SOCKET est analogue à celui d’une HWND
fenêtre. Les classes de socket MFC fournissent des opérations sur le handle encapsulé.
Le type de données SOCKET est décrit en détail dans le Kit de développement logiciel (SDK) Windows. Consultez « Type de données socket et valeurs d’erreur » sous Windows Sockets.
Utilisations pour les sockets
Les sockets sont très utiles dans au moins trois contextes de communication :
Modèles client/serveur.
Scénarios d’égal à égal, tels que les applications de messagerie.
Effectuer des appels de procédure distante (RPC) en ayant l’application de réception interpréter un message en tant qu’appel de fonction.
Conseil
Le cas idéal pour l’utilisation de sockets MFC est lorsque vous écrivez les deux extrémités de la communication : l’utilisation de MFC aux deux extrémités. Pour plus d’informations sur cette rubrique, notamment sur la gestion du cas lorsque vous communiquez avec des applications non MFC, consultez Windows Sockets : Classement d’octets.
Pour plus d’informations, consultez La spécification windows Sockets : ntohs, ntohl, htons, htonl. Consultez également les rubriques suivantes :