guill.net - La page des réseaux

Introduction à Winsock


« Winsock » est l'abréviation des Windows Sockets, passage obligé de la programmation réseaux, même si certains outils, comme certains composants pour les outils Borland, permettent de ne pas se préoccuper ce cet aspect reboutant au première abord.

Winsock est utilisé dans les applications Windows comme support pour la programmation orientée réseaux. C’est l’interface entre le « software » et le « hardware », c’est ce qui permet de programmer l’envoi et la réception de trames.

On peut modéliser une « socket » comme un téléphone, c’est à dire comme l’extrémité d’un canal de transmission bidirectionnel. En connectant deux ordinateurs au même canal de transmission, on peut faire passer des informations d’un programme à un autre sur deux ordinateurs différents.

Pour installer ce canal de transmission, on commence par prévenir la compagnie qui s’occupe des téléphones. On commence donc par prévenir l’ordinateur. On initialise « Winsock » en appelant la fonction WSAStartup(), et en donnant la version que l’on va utiliser. La version la plus courante est la version 1.1. Il existe une version 2 mais qui est peu utilisée car elle ne possède pas grand chose de plus que la précédente.

De même, lorsqu’on en a fini avec les transmissions de données par le réseaux, on appelle la fonction WSACeanup() pour désinstaller proprement le canal de transmission.

Utilisation de Winsock

Il s’agit ensuite d’installer le canal de transmission. On fait appel à la fonction socket() pour spécifier le type d’adresse que l’on utilise (typiquement les adresses IP sur  Internet : la structure AF_INET contenant une adresse IP et un numéro de port), ainsi que la façon dont on va envoyer les données : soit sur TCP (Transfert Control Protocol, paramètre SOCK_STREAM), soit sur UDP (User Datagram Protocol, paramètre SOCK_DGRAM).

Ensuite, il faut une adresse à écouter, et la fonction bind() permet de lier le canal de transmission à une adresse et un numéro de port.

A cet instant, le canal est prêt à fonctionner, on peut envoyer et recevoir des données avec les fonctions send() et recv().

Pour en savoir plus sur Winsock, je vous recommande Windows Sockets : un cours accéléré.