corentin.bollet
6 months ago
4 changed files with 111 additions and 0 deletions
@ -0,0 +1,42 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
import socket |
||||
|
|
||||
|
IP_SERVEUR = '127.0.0.1' |
||||
|
PORT = 42000 |
||||
|
|
||||
|
|
||||
|
class Connexion(): |
||||
|
def __init__(self, sens): |
||||
|
"""Si `sens` == "serveur" ouvre une connexion côté serveur, |
||||
|
sinon ouvre une connexion côté client.""" |
||||
|
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
||||
|
if sens == "serveur": |
||||
|
mySocket.bind((IP_SERVEUR, PORT)) |
||||
|
print(f"Serveur({IP_SERVEUR}:{PORT}) prêt. Attend un client...") |
||||
|
mySocket.listen() |
||||
|
self.connexion, adresse = mySocket.accept() |
||||
|
print(f"Connecté avec le client({adresse}).") |
||||
|
else: |
||||
|
print(f"Connexion au serveur({IP_SERVEUR}:{PORT})...") |
||||
|
mySocket.connect((IP_SERVEUR, PORT)) |
||||
|
print("Connexion établie avec le serveur") |
||||
|
self.connexion = mySocket |
||||
|
|
||||
|
def send(self, message): |
||||
|
"""Envoie le message, et l'affiche.""" |
||||
|
print(f"Envoi de <{message}>.") |
||||
|
self.connexion.send(message) |
||||
|
|
||||
|
def recv(self): |
||||
|
"""Reçoit un message d'au plus 1024 octets, l'affiche et le renvoie. |
||||
|
Attention, la réception est bloquante : tant qu'il n'y a pas de message |
||||
|
à recevoir, le programme attend.""" |
||||
|
message = self.connexion.recv(1024) |
||||
|
print(f"Reçu <{message}>.") |
||||
|
return message |
||||
|
|
||||
|
def close(self): |
||||
|
"""Ferme la connexion.""" |
||||
|
print("Fermeture de la connexion.") |
||||
|
self.connexion.close() |
@ -0,0 +1,38 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
from Connexion import Connexion |
||||
|
import tkinter as tk |
||||
|
|
||||
|
|
||||
|
class Interface(tk.Tk): |
||||
|
"""interface graphique pour envoyer/recevoir/chiffrer/dechiffrer""" |
||||
|
def __init__(self, sens): |
||||
|
tk.Tk.__init__(self) |
||||
|
self.connexion = Connexion(sens) |
||||
|
self.title(sens) |
||||
|
self.entree = tk.StringVar() |
||||
|
tk.Entry(self, textvariable=self.entree, width=30).pack() |
||||
|
tk.Label(text="Message reçu : ").pack() |
||||
|
self.message = tk.StringVar() |
||||
|
tk.Label(textvariable=self.message).pack() |
||||
|
self.sendButton = tk.Button(self, text="Send", command=self.send) |
||||
|
self.sendButton.pack() |
||||
|
self.recvButton = tk.Button(self, text="Receive", command=self.receive) |
||||
|
self.recvButton.pack() |
||||
|
|
||||
|
def send(self): |
||||
|
"""Envoie le message chiffré.""" |
||||
|
message = self.entree.get().encode("utf8") |
||||
|
# à compléter pour chiffrer le message |
||||
|
self.connexion.send(message) |
||||
|
|
||||
|
def receive(self): |
||||
|
"""Réceptionne un message depuis le serveur et l'affiche. |
||||
|
Attention : bloque tant que le serveur n'envoie rien.""" |
||||
|
message = self.connexion.recv() |
||||
|
# à compléter pour déchiffrer le message |
||||
|
self.message.set(message.decode("utf8")) |
||||
|
|
||||
|
def destroy(self): |
||||
|
self.connexion.close() |
||||
|
tk.Tk.destroy(self) |
@ -0,0 +1,14 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
import tkinter as tk |
||||
|
from Interface import Interface |
||||
|
|
||||
|
|
||||
|
class InterfaceClient(Interface): |
||||
|
def __init__(self): |
||||
|
Interface.__init__(self, "client") |
||||
|
# à compléter |
||||
|
|
||||
|
|
||||
|
It = InterfaceClient() |
||||
|
It.mainloop() |
@ -0,0 +1,17 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
|
||||
|
import tkinter as tk |
||||
|
from Interface import Interface |
||||
|
|
||||
|
|
||||
|
class InterfaceServeur(Interface): |
||||
|
def __init__(self): |
||||
|
Interface.__init__(self, "serveur") |
||||
|
self.n = 870567544966633301 |
||||
|
self.e = 42205 |
||||
|
self.d = 769020235650503533 |
||||
|
# à compléter |
||||
|
|
||||
|
|
||||
|
It = InterfaceServeur() |
||||
|
It.mainloop() |
Loading…
Reference in new issue