Introduction à la programmation de socket en Python

Dans la programmation des sockets, la communication est établie via un réseau entre deux sockets (nœuds). Le serveur agit comme le port d'écoute qui écoute une adresse IP particulière et le socket client atteint le socket du serveur pour la communication. Afin de travailler dans la programmation des sockets, nous devrons importer la bibliothèque de sockets fournie par python.

Serveur de socket Python

Un socket est un point d'extrémité pour envoyer ou recevoir des données, nous avons donc besoin d'un serveur et d'un programme de socket client à cet effet. Pour notre programme d'exemple, nous hébergerons le serveur et le client sur la même machine. Nous pouvons même envoyer et recevoir via un code serveur. Il est à noter que nous ne pouvons avoir qu'un seul programme serveur alors que nous pouvons avoir plusieurs programmes clients.

Le protocole TCP (Transmission Control Protocol) est le protocole par défaut choisi. TCP est fiable car les paquets qui sont abandonnés dans le réseau sont détectés et transmis par l'expéditeur. TCP fournit également la livraison des données dans l'ordre, c'est-à-dire l'ordre dans lequel elles sont envoyées par l'expéditeur dans un ordre similaire, il est lu par l'application.

server.py

Jetez un œil au programme ci-dessous: server.py

Ligne 3: Socket est une bibliothèque préinstallée et un objet sera créé pour cela. Ce module socket est importé dans le programme python et il sera utilisé comme fonction socket plus tard dans le programme. Nous créons ici un objet, qui appellera la fonction socket.

Ligne 4: socket.AF_INET correspond à IPV4 (Si l'on souhaite utiliser IPV6, alors socket.AF_INET6 peut être utilisé. Il s'agit de la famille de socket. AF_INET spécifie le protocole qui sera utilisé pour la communication. IPV4 et IPV6 sont des commandes de transmission différentes les moyens ou protocoles de transmission des données via le réseau.

IPV4 et IPV6 ne sont que des types d'adresses IP différents. Le socket.AF_INET correspond à TCP. Le protocole TCP (Transmission Control Protocol) fonctionne avec l'IP et définit la façon dont l'ordinateur s'envoie des paquets de données.

Ensuite, ce qui est nécessaire est TCP pour cela, nous aurons besoin d'un socket.SOCK_STREAM, qui est le type de socket. TCP est un protocole orienté connexion, qui consiste essentiellement à effectuer une connexion d'établissement de liaison à trois avec un serveur et un client. Ensuite, nous fournissons un nom d'hôte où le client se connectera.

Ligne 5: pour le nom d'hôte, «localhost» ou «127.0.01» ou socket.gethostname (), l'un ou l'autre peut être utilisé. Il obtient l'adresse IP du serveur.

Ce qui précède sont les deux paramètres que nous définissons pour le socket.

Ligne 6: Nous avons généralement de nombreux ports dans notre système, nous devons donc utiliser un port hôte non utilisé. N'importe quel chiffre à quatre peut être utilisé car la plupart des chiffres inférieurs sont occupés.

Ligne 7: La méthode bind (), qui lie l'hôte et le port à un socket.

Toutes ces étapes sont nécessaires pour démarrer notre serveur. Maintenant, nous devons faire le client. Comme mentionné précédemment, nous pouvons avoir plusieurs clients.

Ligne 8: Nous avons la possibilité de mentionner le numéro du client qui peut interagir avec le serveur. Cet objectif est atteint par s.listen (6). Il démarre l'écouteur TCP. Le numérique représente le nombre de clients qui peuvent interagir. Si par exemple, le 7 ème client vient alors il sera abandonné.

Ligne 9: s.accept () accepte la demande du client et renvoie deux objets, l'un est l'objet socket-client et l'autre est l'adresse. L'adresse IP sera l'adresse du client où notre client est présent.

Ligne 10: Cela ressemble plus à une notification au serveur sur la connexion qui a été établie.

Enfin, nous imprimons une déclaration qui devrait s'afficher lorsque les deux programmes s'exécutent dans le terminal. Une fois que nous aurons terminé avec notre programme serveur, nous écrirons le programme client.

Client de socket Python

Ici, nous discutons du client de socket python:

client.py

Voici notre programme pour le client: client.py

Le programme client a également un socket similaire, comme nous le voyons dans le cas du programme serveur. Habituellement, le programme client s'exécute à partir du programme serveur. Ce n'est pas dans la même machine que nous avons dans cet exemple ici. Avec les sockets, ce que nous avons l'intention de réaliser est de communiquer via des programmes Python sur une machine en réseau local ou même en réseau à distance.

Ligne 8: Il existe une méthode binding () dans le programme serveur, ici la méthode connect () sera utilisée. Le tuple ici prendra l'hôte et le port dans la méthode. Nous prenons le même port que nous avions utilisé dans notre server.py

Nous devons exécuter server.py et client.py dans différents terminaux et c'est ainsi que nous verrons la connexion se produire.

Production:

La capture d'écran provient de deux terminaux différents, l'un ouvert dans CMD et l'autre ouvert dans PowerShell dans Windows. La fenêtre de gauche ouvre le programme server.py et le terminal de droite ouvre le programme client.py.

Nous voyons la sortie imprimée dans le terminal côté serveur.

Envoi d'une chaîne d'un fichier à un autre fichier

Nous allons essayer d'envoyer un message du côté client au côté serveur. Nous écrirons un message dans le programme client.py.

1. client.py

Voici notre programme pour le client: client.py

Ligne 9 et ligne 10: nous définissons le message dans une variable et envoyons le message sous forme d'octets et le convertissons ou le codons au format UTF-8. (UTF est une norme Unicode car tous les contenus du message sont des caractères et ils relèvent du graphique Unicode.) Nous sommes censés coder et garder les données aussi petites que possible, sinon la transmission échouerait à un moment donné.

Ligne 11: Nous fermons la connexion.

Dans le programme serveur, nous apporterons les modifications suivantes.

2. server.py

Voici notre programme pour le serveur: server.py

Ligne 11: Afin de construire la connexion, nous utilisons un objet client socket. Nous mentionnons la taille du tampon en ajoutant 1024 octets (1 Ko) à la méthode et nous gardons dans le message variable.

Ligne 13: Ensuite, nous imprimons la méthode.

Production:

Nous ouvrons à nouveau les deux terminaux et voyons la sortie suivante.

Conclusion - Programmation des sockets en Python

Les bases de la programmation de socket ont été abordées ici, mais il faut noter que c'est un domaine énorme et qu'il y a beaucoup plus de choses à couvrir dans la programmation de socket. Une bonne compréhension des bases aiderait à gérer des scénarios client-serveur complexes.

Articles recommandés

Ceci est un guide de programmation de socket en Python. Nous discutons ici du concept de serveur de socket python et de client de socket python avec implémentation de code. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Boucles imbriquées Python
  2. Les 15 principales fonctionnalités de Python
  3. Top 7 des IDE Python pour Windows
  4. Différentes méthodes dans les ensembles Python