Programmation réseau Python – Bien choisir son serveur d impression
Annonces
Python fournit deux niveaux d’accès aux services réseau. À un niveau bas, vous pouvez accéder à la prise en charge de socket de base dans le système d'exploitation sous-jacent, ce qui vous permet d'implémenter des clients et des serveurs pour des protocoles en mode connexion ou en mode 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 explique les concepts les plus célèbres de la mise en réseau – Programmation de sockets.
Sommaire
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 d'une même machine ou entre processus de différents continents.
Les sockets peuvent être implémentés sur différents types de canaux: sockets de domaine Unix, TCP, UDP, etc. le prise La bibliothèque fournit des classes spécifiques pour la gestion des transports communs ainsi qu'une interface générique pour la gestion du reste.
Les sockets ont leur propre vocabulaire –
| Sr.No. | Terme et description |
|---|---|
| 1 |
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. |
| 2 |
type Type de communication entre les deux extrémités, généralement SOCK_STREAM pour les protocoles en mode connexion et SOCK_DGRAM pour les protocoles sans connexion. |
| 3 |
protocole Généralement zéro, ceci peut être utilisé pour identifier une variante d'un protocole dans un domaine et un type. |
| 4 |
nom d'hôte L'identifiant d'une interface réseau –
|
| 5 |
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. |
le prise Module
Pour créer un socket, vous devez utiliser le socket.socket () fonction disponible dans prise module, qui a la syntaxe générale –
s = socket.socket (socket_family, socket_type, protocole = 0)
Voici la description des paramètres –
-
famille_socket – C'est soit AF_UNIX, soit AF_INET, comme expliqué précédemment.
-
type_socket – Il s’agit de SOCK_STREAM ou de SOCK_DGRAM.
-
protocole – Ceci est généralement omis, 0 par défaut.
Une fois que tu as prise 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 serveur
| Sr.No. | Méthode et description |
|---|---|
| 1 |
s.bind () Cette méthode lie l'adresse (nom d'hôte, paire de numéro de port) au socket. |
| 2 |
s.listen () Cette méthode configure et démarre le programme d'écoute TCP. |
| 3 |
s.accept () Ceci accepte passivement la connexion client TCP, en attendant que la connexion arrive (blocage). |
Méthodes de socket client
| Sr.No. | Méthode et description |
|---|---|
| 1 |
s.connect () Cette méthode initie activement la connexion au serveur TCP. |
Méthodes générales des sockets
| Sr.No. | Méthode et description |
|---|---|
| 1 |
s.recv () Cette méthode reçoit un message TCP |
| 2 |
s.send () Cette méthode transmet le message TCP |
| 3 |
s.recvfrom () Cette méthode reçoit un message UDP |
| 4 |
s.sendto () Cette méthode transmet un message UDP |
| 5 |
s.close () Cette méthode ferme socket |
| 6 |
socket.gethostname () Renvoie le nom d'hôte. |
Un serveur simple
Pour écrire des serveurs Internet, nous utilisons le prise 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 de socket.
Maintenant appeler bind (nom d'hôte, port) fonction pour spécifier un Port pour votre service sur l'hôte donné.
Ensuite, appelez le Acceptez méthode de l'objet retourné. Cette méthode attend que le client se connecte au port spécifié, puis renvoie un message. lien objet qui représente la connexion à ce client.
#! / usr / bin / python # Ceci est un fichier server.py
Import socket # Module de socket d'importation
s = socket.socket () # Crée un objet socket
host = socket.gethostname () # Obtenir le nom de la machine locale
port = 12345 # Réservez un port pour votre service.
s.bind ((host, port)) # Lié au port
s.listen (5) # Attendez maintenant la connexion du client.
alors que vrai:
c, addr = s.accept () # Etablit une connexion avec le client.
print 'Vous avez une connexion depuis', addr
c.send ('Merci de votre connexion')
c.close () # ferme la connexion
Un client simple
Écrivons un programme client très simple qui ouvre une connexion à un port 12345 donné et à un hôte donné. C’est très simple de créer un client de socket à l’aide de Python. prise fonction du module.
le socket.connect (nomhôte, port) ouvre une connexion TCP à nom d'hôte sur le Port. Une fois qu'un socket est ouvert, vous pouvez le lire comme n'importe quel objet IO. Lorsque vous avez terminé, rappelez-vous 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 du socket, puis quitte –
#! / usr / bin / python # Ceci est le fichier client.py Import socket # Module de socket d'importation s = socket.socket () # Crée un objet socket host = socket.gethostname () # Obtenir le nom de la machine locale port = 12345 # Réservez un port pour votre service. s.connect ((hôte, port)) imprimer à partir (1024) s.close () # Ferme le socket une fois terminé
Maintenant, lancez le fichier server.py en arrière-plan, puis au-dessus de client.py pour voir le résultat.
# La suite lancera un serveur en arrière-plan. $ python server.py & # Une fois le serveur démarré, exécutez le client comme suit: $ python client.py
Cela produirait le résultat suivant –
Connexion établie depuis ('127.0.0.1', 48437)
Merci de vous connecter
Modules Internet Python
Liste de certains modules importants de la programmation réseau / Internet Python.
| Protocole | Fonction commune | Numéro de port | Module Python |
|---|---|---|---|
| HTTP | les pages Web | 80 | httplib, urllib, xmlrpclib |
| NNTP | Nouvelles Usenet | 119 | nntplib |
| FTP | Transferts de fichiers | 20 | ftplib, urllib |
| SMTP | Envoi d'email | 25 | smtplib |
| POP3 | Récupérer un email | 110 | poplib |
| IMAP4 | Récupérer un email | 143 | imaplib |
| Telnet | Lignes de commande | 23 | telnetlib |
| Gaufre | 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.
Lectures supplémentaires
Ce fut un début rapide avec Socket Programming. C'est un vaste sujet. Il est recommandé de passer par le lien suivant pour trouver plus de détails –







Commentaires
Laisser un commentaire