Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Python - Programmation réseau

Page PrécédentePage Suivante

Python fournit 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 possède également des bibliothèques qui fournissent un accès de niveau supérieur à des protocoles réseau spécifiques au niveau de l'application, 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 par socket.

Qu'est-ce que les sockets ?

Les sockets sont les extrémités d'un canal de communication bidirectionnel. Les sockets peuvent communiquer au sein d'un processus, entre processus sur la même machine ou entre 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 prise fournit des classes spécifiques pour gérer les transports communs ainsi qu'une interface générique pour gérer le reste.

Les sockets ont leur propre vocabulaire −

Domaine

Famille de protocoles utilisée comme mécanisme de transport. Ces valeurs sont des constantes telles que AF_INET, PF_INET, PF_UNIX, PF_X25, etc.

saisir

Le type de communications entre les deux points de terminaison, généralement SOCK_STREAM pour les protocoles orientés connexion et SOCK_DGRAM pour les protocoles sans connexion.

protocole

Généralement zéro, cela peut être utilisé pour identifier une variante d'un protocole dans un domaine et un type.

nom d'hôte

L'identifiant d'une interface réseau −

  • Une chaîne, qui peut être un nom d'hôte, une adresse quadruple pointée ou une adresse IPV6 en notation deux-points (et éventuellement un point)

  • Une chaîne "", qui spécifie une adresse INADDR_BROADCAST.

  • Une chaîne de longueur nulle, qui spécifie INADDR_ANY, ou

  • Un entier, interprété comme une adresse binaire dans l'ordre des octets de l'hôte.

port

Chaque serveur écoute les clients appelant 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.

Sr.No. Terme et description
1
2
3
4
5

La prise Module

Pour créer un socket, vous devez utiliser le socket.socket() fonction disponible dans socket module, qui a la syntaxe générale −

s = socket.socket (socket_family, socket_type, protocol=0)

Voici la description des paramètres −

Une fois que vous avez socket objet, vous pouvez utiliser les fonctions requises pour créer votre programme client ou serveur. Voici la liste des fonctions requises −

Méthodes de socket de serveur

s.bind()

Cette méthode lie l'adresse (nom d'hôte, paire de numéros de port) au socket.

s.listen()

Cette méthode configure et démarre l'écouteur TCP.

s.accept()

Ceci accepte passivement la connexion client TCP, en attendant que la connexion arrive (bloquant).

Sr.No. Méthode et description
1
2
3

Méthodes de socket client

s.connect()

Cette méthode initie activement la connexion au serveur TCP.

Sr.No. Méthode et description
1

Méthodes générales des sockets

s.recv()

Cette méthode reçoit un message TCP

s.send()

Cette méthode transmet un message TCP

s.recvfrom()

Cette méthode reçoit un message UDP

s.sendto()

Cette méthode transmet le message UDP

s.close()

Cette méthode ferme le socket

socket.gethostname()

Renvoie le nom d'hôte.

Sr.No. Méthode et description
1
2
3
4
5
6

Un serveur simple

Pour écrire des serveurs Internet, nous utilisons le socket fonction disponible dans le module socket pour créer un objet socket. Un objet socket est ensuite utilisé pour appeler d'autres fonctions afin de configurer un serveur socket.

Appelez maintenant bind(hostname, port) fonction pour spécifier un port pour votre service sur l'hôte donné.

Ensuite, appelez le accepter méthode de l'objet renvoyé. Cette méthode attend qu'un client se connecte au port que vous avez spécifié, puis renvoie une connexion objet qui représente la connexion à ce client.

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

Un client simple

Écrivons un programme client très simple qui ouvre une connexion à un port donné 12345 et à un hôte donné. C'est très simple de créer un client socket en utilisant le socket de Python fonction du module.

Le socket.connect(nomhôte, port) ouvre une connexion TCP vers nom d'hôte sur le port . Une fois que vous avez ouvert un socket, vous pouvez le lire comme n'importe quel objet IO. Une fois terminé, n'oubliez pas de le fermer, comme vous fermeriez un fichier.

Le code suivant est un client très simple qui se connecte à un hôte et à un port donnés, lit toutes les données disponibles à partir du socket, puis quitte −

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                     # Close the socket when done

Maintenant, exécutez ce server.py en arrière-plan, puis exécutez-le au-dessus de client.py pour voir le résultat.

# Following would start a server in background.
$ python server.py & 

# Once server is started run client as follows:
$ python client.py

Cela produirait le résultat suivant −

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Modules Internet Python

Une liste de quelques modules importants dans la programmation Python Network/Internet.

Protocole Fonction commune Numéro de port Module Python
HTTP Pages Web 80 httplib, urllib, xmlrpclib
NNTP Actualités Usenet 119 nntplib
FTP Transferts de fichiers 20 ftplib, urllib
SMTP Envoi d'un e-mail 25 smtplib
POP3 Récupération des e-mails 110 poplib
IMAP4 Récupération des e-mails 143 imaplib
Telnet Lignes de commande 23 telnetlib
Gopher Transferts de documents 70 gopherlib, urllib

Veuillez vérifier toutes les bibliothèques mentionnées ci-dessus pour travailler avec les protocoles FTP, SMTP, POP et IMAP.

Autres lectures

Ce fut un démarrage rapide avec la programmation par socket. C'est un vaste sujet. Il est recommandé de passer par le lien suivant pour trouver plus de détails −


Python

  1. Instruction de passe Python
  2. Compteur Python dans les collections avec exemple
  3. Python - Programmation d'interface graphique (Tkinter)
  4. Python Average :Comment trouver la MOYENNE d'une liste en Python
  5. Matrice Python :transposer, multiplier, exemples de tableaux NumPy
  6. Tutoriel PyTest :qu'est-ce que c'est, comment installer, framework, assertions