Réseautage python

Réseautage python
Python est un langage de haut niveau spécialement conçu pour rendre la vie des développeurs facile. D'un autre côté, la programmation réseau peut être une tâche fastidieuse et compliquée dans d'autres langages de programmation, mais il est simple et facile dans un langage de programmation Python. Il permet à l'utilisateur d'écrire des scripts qui peuvent automatiser la configuration du réseau complexe. Dans cet article, nous verrons comment effectuer la programmation réseau à l'aide de Python.

Comment Python est-il utilisé dans le réseautage?

Le langage de programmation Python joue un rôle vital dans la programmation réseau. Python possède une bibliothèque standard intégrée qui fournit une prise en charge complète pour l'encodage et le décodage des données, les protocoles de réseau et tous les autres concepts de réseautage. La rédaction des codes de programmation réseau dans Python est beaucoup plus facile que dans C ++ ou Java. Le langage de programmation Python offre deux niveaux d'accès au service réseau: accès de bas niveau et de haut niveau. L'accès de bas niveau offre la prise en charge de base du socket du système d'exploitation. Tandis que l'accès de haut niveau permet aux protocoles d'implémentation comme FTP. Http, etc.

Cet article vous aidera dans une compréhension de base du concept le plus célèbre de réseautage à Python qui est la programmation de socket.

Que sont les prises?

Les prises fournissent un canal de communication bidirectionnel entre deux points de terminaison. Processus sur d'autres machines, processus sur la même machine et socket parvient à communiquer avec tous. Ils peuvent être implémentés sur différents canaux tels que UDP, TCP, Sockets de domaine UNIX, etc. La bibliothèque de socket de Python fournit différentes classes pour gérer le transfert de données commun ou une interface générique pour gérer le reste. Les prises utilisent différents types de protocoles pour déterminer la connexion du port à port entre les serveurs et les clients. Ces protocoles sont utilisés pour FTP, SMTP, e-mail, adresse IP, DNS, etc. Le vocabulaire des sockets est différent. Jetez un œil à l'illustration suivante:

Terme Description
Domaine Ensemble de protocoles utilisés comme mécanisme de transport.
Taper Définit le type de communication entre les sockets.
Protocole Détermine le type de protocole dans le type et le domaine.
Port Un point d'écoute à travers lequel les serveurs écoutent le client. Il se compose du nom d'un service, d'une chaîne contenant le numéro de port et un numéro de port Fixnum.
Nom d'hôte Identifie une interface réseau et consiste aux choses suivantes:

Une chaîne «» qui identifie l'adresse de diffusion.

Une chaîne de longueur zéro.

Une chaîne qui contient le nom d'hôte, une adresse à double quad ou une adresse IPv6.

Un entier qui définit l'adresse binaire dans l'ordre des octets de l'hôte.

Qu'est-ce que la programmation de socket?

La programmation de socket relie deux nœuds sur un réseau de communication. Un nœud est l'auditeur qui est communément appelé serveur, et l'autre atteint le serveur qui est communément appelé client. Pour la programmation de socket en python, le module de socket doit être inclus.

Explorons quelques exemples pour apprendre à implémenter la programmation réseau dans Python.

Exemple 1:

Dans cet exemple, nous apprendrons la syntaxe du module Socket et comment l'importer dans un programme Python. Tout d'abord, nous importons le module de socket dans le programme Python à l'aide de l'instruction «Importer Socket». Ensuite, nous pouvons utiliser les fonctions des modules de socket. Voici la syntaxe du module Socket ():

socket d'importation
socketmodule = socket.prise.Af_inet, socket.Sock_stream)
Imprimer (socketmodule)

Maintenant, exécutons l'instruction pour voir ce qu'elle renvoie:

Voici la sortie suivante:

Exemple 2:

Maintenant, apprenons à créer un serveur simple et un client simple et voyons comment ils communiquent entre eux.

Voici le codage côté serveur:

D'abord, importez une prise puis créez un objet de socket:

Importer une prise comme s
socketmodule = socket.prise()

Obtenez le nom de la machine en appelant l'instruction GethostName ():

nom d'hôte = socket.gethostname ()

Fournissez le numéro de port que vous souhaitez que le serveur établisse une connexion entre le serveur et le client:

Portnum = 12345

Maintenant, liez l'hôte avec le port pour démarrer une connexion:

s.bind ((nom d'hôte, portnum))

L'étape suivante consiste à attendre la connexion client:

socketmodule.Écoutez (5)

Enfin, établissez une connexion avec le client:

Bien que vrai:
A, ADRS = S.accepter()
print ('connexion reçue de', ADRS)
un.Envoyer (B'Thanks pour la connexion ')
un.fermer()

Ce qui suit est le codage côté client:

Pour démarrer une connexion, le module de socket doit être importé du côté client tout comme il a été importé du côté du serveur:

Importer une prise comme s
socketmodule = socket.prise()

Suivez le même processus, obtenez le nom de la machine locale et réservez le port qui a été réservé par le serveur pour établir une connexion:

nom d'hôte = socket.gethostname ()
Portnum = 12345

Maintenant, connectez l'hôte avec le port et établissez une connexion entre eux:

socketmodule.connecter (('127.0.0.1 ', Portnum))
imprimer (socketmodule.recv (1024))
s.fermer()

Une fois que vous avez terminé avec le codage côté client et le serveur, démarrez le serveur et le client en arrière-plan pour voir les résultats:

Après une connexion réussie, vous verrez la sortie suivante:

Exemple 3:

Voyons un autre exemple pour avoir une compréhension plus claire de la façon dont le serveur se connecte avec le client ainsi que sur la façon dont le serveur écoute le client.

Voici le codage côté serveur:

Pour le codage côté serveur, suivez le même processus. Importez la prise, créez un module de socket, réservez le numéro de port, liez l'hôte et le port et écoutez le client. Si vous pouvez observer, la condition «IF» est ajoutée à la boucle pour vérifier une condition particulière. Voir le code suivant:

socket d'importation
Portnum = 60
IPadrs = '127.0.0.1'
tampons = 30
socketmodule = socket.prise.Af_inet, socket.Sock_stream)
socketmodule.lier ((iPadrs, Portnum))
socketmodule.Écoutez (1)
Conn, ADRS = socketmodule.accepter()
Print ('L'adresse de la connexion est:', ADRS)
Bien que vrai:
data = conn.recv (tampons)
Si ce n'est pas des données:
casser
imprimer ("Les données reçues sont:", données)
con.envoyer des données)
con.fermer()

Ce qui suit est le codage côté client:

Le processus de création d'une connexion du côté client est à nouveau, le même. Importez la prise, créez un module de socket, réservez le numéro de port et connectez le port à l'hôte:

socket d'importation
Portnum = 5006
IPadrs = '127.0.0.1'
tampons = 1024
PrintMessage = "HI! Je suis un message du client."
socketmodule = socket.prise.Af_inet, socket.Sock_stream)
socketmodule.connect ((iPadrs, Portnum))
socketmodule.Envoyer (PrintMessage)
data = socketmodule.recv (tampons)
socketmodule.fermer

Maintenant, observez que le client envoie un message au serveur - «Salut! Je suis un message du client ». Ce message est reçu par le serveur, et il est imprimé.

Après la connexion réussie entre le serveur et le client, vous pourrez voir la sortie suivante:

Conclusion

Ceci est un aperçu de base de la programmation de socket dans Python et un démarrage rapide avec l'implémentation. Cependant, c'est un vaste sujet et contient beaucoup de détails avec un codage complexe. Une fois que vous serez sur le plan des programmes simples, vous pourrez entrer dans la profondeur de la programmation de socket.