From 4e01488498b8d91fc0b49186adc784473a0be94e Mon Sep 17 00:00:00 2001 From: MADANI Mohamed <mohamed.madani4@etu.univ-lorraine.fr> Date: Tue, 30 Apr 2024 19:15:47 +0000 Subject: [PATCH] Upload New File --- cl.py | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 cl.py diff --git a/cl.py b/cl.py new file mode 100644 index 0000000..d07f5a6 --- /dev/null +++ b/cl.py @@ -0,0 +1,72 @@ +import socket +import sys +import json +import keyboard + +# Liste pour stocker les touches pressées pour former un message +buffer = [] + +# Nom d'utilisateur et destination du message +user = "" +destination = "" + +# Socket du client +client_socket = None + +# Fonction pour initialiser le client +def initialize_client(): + global user, destination, client_socket + user = input("Enter your username: ") + destination = input("Enter the destination username: ") + client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + server_address = ('localhost', int(sys.argv[1])) if len(sys.argv) > 1 else ('localhost', 12345) + try: + client_socket.connect(server_address) + client_socket.settimeout(1) + print("Connected to server") + setup_keyboard_shortcuts() + start_message_receiving() + except ConnectionRefusedError: + print("Connection refused. Please make sure the server is running.") + +# Fonction pour configurer les raccourcis clavier +def setup_keyboard_shortcuts(): + keyboard.add_hotkey('ctrl+q', lambda: sys.exit(0)) + keyboard.on_press(on_key_event) + +# Fonction appelée lorsqu'une touche est pressée +def on_key_event(e): + if e.name == 'm' and e.event_type == 'down' and keyboard.is_pressed('ctrl'): + buffer.clear() + print("Enter your message: ") + keyboard.hook(capture_keys) + +# Fonction pour capturer les touches pressées et les ajouter au buffer +def capture_keys(e): + if e.name == 'enter' and e.event_type == 'down': + keyboard.unhook(capture_keys) + send_message() + else: + if e.name == 'backspace': + buffer.pop() + else: + buffer.append({"space": " ", "backspace": ""}.get(e.name, e.name)) + +# Fonction pour envoyer le message +def send_message(): + message = ''.join(buffer[1:]) + data = json.dumps({"user": user, "destination": destination, "message": message}) + client_socket.send(data.encode('utf-8')) + +# Fonction pour commencer à recevoir les messages du serveur +def start_message_receiving(): + while True: + try: + res = client_socket.recv(1024) + if res: + print(f"Received message: {res.decode('utf-8')}") + except socket.timeout: + continue + +if __name__ == "__main__": + initialize_client() -- GitLab