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 −
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 −
-
socket_family − Il s'agit soit d'AF_UNIX, soit d'AF_INET, comme expliqué précédemment.
-
type_socket − Il s'agit soit de SOCK_STREAM, soit de SOCK_DGRAM.
-
protocole − Ceci est généralement omis, par défaut à 0.
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
Sr.No. | Méthode et description |
---|---|
1 | |
2 | |
3 |
Méthodes de socket client
Sr.No. | Méthode et description |
---|---|
1 |
Méthodes générales des sockets
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 −
-
Programmation des sockets Unix.
-
Bibliothèque et modules de socket Python.
Python