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