Sockets
Python offre deux niveaux d'accès aux services réseau. À un niveau inférieur, vous pouvez accéder à la prise en charge de base des sockets dans le système d'exploitation sous-jacent, ce qui vous permet d'implémenter des clients et des serveurs pour les protocoles orientés connexion et sans connexion.
Python dispose également de bibliothèques qui fournissent un accès de plus haut niveau à des protocoles réseau spécifiques au niveau des applications, tels que FTP, HTTP, etc.
Ce chapitre vous permet de comprendre le concept le plus célèbre de la mise en réseau - la programmation des sockets.
Qu'est-ce que les Sockets ?
Les sockets sont les points d'extrémité d'un canal de communication bidirectionnel. Les sockets peuvent communiquer au sein d'un processus, entre des processus sur la même machine, ou entre des processus sur différents continents.
Les sockets peuvent être implémentés sur un certain nombre de types de canaux différents : sockets de domaine Unix, TCP, UDP, etc. La bibliothèque de sockets fournit des classes spécifiques pour gérer les transports courants ainsi qu'une interface générique pour gérer les autres.
Les sockets ont leur propre vocabulaire :
domain
: La famille de protocoles qui est utilisée comme mécanisme de transport. Ces valeurs sont des constantes telles que AF_INET, PF_INET, PF_UNIX, PF_X25, et ainsi de suite.type
: Le type de communication entre les deux points d'extrémité, typiquement SOCK_STREAM pour les protocoles orientés connexion et SOCK_DGRAM pour les protocoles sans connexion.protocol
: Généralement zéro, ceci peut être utilisé pour identifier une variante d'un protocole dans un domaine et un type.hostname
: L'identifiant d'une interface réseau :- Une chaîne, qui peut être un nom d'hôte, une adresse en quart de point ou une adresse IPV6 en notation deux points (et éventuellement point).
- Une chaîne
<broadcast>
, qui spécifie une adresse INADDR_BROADCAST. - Une chaîne de longueur zéro, qui spécifie INADDR_ANY.
- Un nombre entier, interprété comme une adresse binaire dans l'ordre des octets de l'hôte.
port
: Chaque serveur écoute les clients qui l'appellent sur un ou plusieurs ports. Un port peut être un numéro de port Fixnum, une chaîne contenant un numéro de port, ou le nom d'un service.
Le module socket
Pour créer un socket, vous devez utiliser la fonction socket.socket() disponible dans le module socket, qui a la syntaxe générale :
s = socket.socket(socket_family, socket_type, protocol = 0)
Voici la description des paramètres :
- socket_family - Il s'agit de AF_UNIX ou AF_INET, comme expliqué précédemment.
- socket_type - Il s'agit de SOCK_STREAM ou SOCK_DGRAM.
- protocol - Ce paramètre est généralement laissé de côté et prend la valeur 0 par défaut.
Une fois que vous avez l'objet socket, vous pouvez utiliser les fonctions requises pour créer votre programme client ou serveur. Voici la liste des fonctions requises :
Méthodes pour les sockets de serveur
Besoin d'aide ?
Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !