Projet

Général

Profil

comSock » comSockCli.py

Jean-Michel Bain-Cornu, 21/04/2019 22:26

 
# module standard python de gestion des communications
import socket
# module d'encodage des objets python
import pickle

class ComSockCli():
'''Classe de base de gestion des communications, côté client.
Encode les données, les envoie au serveur, récupère les résultats, et les décode.
Pour l'utilisation, dériver cette classe et utiliser la méthode "envoi"
(voir le programme exemple client.py).'''

def __init__(self,host):
'''Méthode appelée lors de la création de l'objet.
Ne fait que mémoriser le nom du serveur.'''
self.host = host

def envoi(self,data):
'''Envoie un objet python au serveur et récupère un objet en résultat.'''

# le port IP est au choix ; il doit être identique à celui du serveur
port = 8000
# créee socket IP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# réalise la connection au serveur. Le nom a été mémorisé à l'init de l'objet.
s.connect((self.host,port))
# encode l'objet à transmettre
msg = pickle.dumps(data)
# envoie le buffer encodé
s.send(msg)
# attend le buffer contenant l'objet résultant
rep = s.recv(1024)
# ferme la communication
s.close()
# décode
reponse = pickle.loads(rep)
# retourne l'objet résultant
return reponse
(3-3/4)