Python : Réseau
La plupart des informations sont tirées de : https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/234698-le-reseau
Un client/serveur très simples pour comprendre le fonctionnement
Serveur:
# -*-coding:utf-8 -*
#Création d'un serveur
import socket #Le module socket contient les objets sockets
connexion_principale = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #L'objet socket, AF_INET correspond à la famille d'adresses (ici, IP), et SOCK_STREAM correspond à TCP
#On va connecter le socket, avec la méthode bind. Elle prend en paramètre un tuple (nom_hote, port).
#Binder le socket, cela veut dire que l'on va déclarer que l'on utilise ce port (On va prendre un port dynamique).
connexion_principale.bind((, 12800))
#On va faire écouter notre socket : il n'est pas encore en LISTEN. On va donc utiliser la méthode listen.
#On lui passe en paramètre le nombre de connexions qu'il peut recevoir et refuser (en général 5).
connexion_principale.listen(5)
#Accepter une connexion venant du client
#C'est la dernière étape : on va utiliser la méthode accept, qui bloque le processus tant qu'aucun client n'est venu se connecter.
#La méthode accept renvoie deux choses : le socket connecté qui vient de se créer, ainsi que le port de connexion du client.
connexion_avec_client, infos_connexion = connexion_principale.accept()
#Cette méthode bloque le programme, on va passer au client.
#########
#Une fois que le client s'est connecté, on peut récupérer nos informations de connexion
print(infos_connexion)
##Faire communiquer nos sockets
#Pour faire communiquer nos sockets, on va utiliser la méthode send pour envoyer et recv pour recevoir.
#send renvoie le nombre de caractères envoyés.
connexion_avec_client.send(b"J'ai accepte la connexion")
##On utilise recv côté client.
###Fermer la connexion
connexion_avec_client.close()
Le client :
import socket
# -*-coding:utf-8 -*
###On va d'abord créer le client de la même façon que pour le serveur
connexion_avec_serveur = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
##On va connecter le client avec la méthode connect. Elle prend comme bind un tuple en paramètre, contenant le nom d'hôte et le
#numéro de port du serveur.
#Vu que les deux applications sont sur la même machine le nom d'hôte est localhost
connexion_avec_serveur.connect(('localhost', 12800))
#Notre serveur et notre client sont connectés.
#On peut retourner sur notre serveur
###On va recevoir ce qu'envoie le serveur. recv prend en paramètre le nombre de caractères à lire, en général 1024. On pourra
#récupérer un message en plusieurs fois.
msg_recu = connexion_avec_serveur.recv(1024)
print(msg_recu)
#Le message recu est affiché.
#Fermer la connexion
connexion_avec_serveur.close()