Skip to content
Snippets Groups Projects
Commit 1b71f92b authored by MADANI Mohamed's avatar MADANI Mohamed
Browse files

Upload New File

parent ab7d1f68
Branches
No related tags found
No related merge requests found
mn.py 0 → 100644
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 appelée lorsqu'une touche est pressée
def on_key_event(e):
# Si Ctrl+M est pressé, on demande à l'utilisateur d'entrer le message.
if e.name == 'm' and e.event_type == 'down' and keyboard.is_pressed('ctrl'):
clear_buffer()
print("Enter your message: ")
keyboard.hook(capture_keys)
# Fonction pour capturer les touches pressées et les ajouter au buffer
def capture_keys(e):
# Si Enter est pressé, on arrête de capturer les touches et on affiche le message
if e.name == 'enter' and e.event_type == 'down':
keyboard.unhook(capture_keys)
send_message()
else:
# Sinon, on ajoute la touche au buffer
if e.name == 'backspace':
remove_last_key()
else:
add_key_to_buffer(e)
# Fonction pour démarrer le client
def start_client():
global client_socket
global user
global destination
user = input("Enter your username: ") # Demande le nom d'utilisateur
destination = input("Enter the destination username: ") # Demande la destination du message
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Crée un socket
server_address = ('localhost', int(sys.argv[1])) if len(sys.argv) > 1 else ('localhost', 12345)
try:
client_socket.connect(server_address) # Connecte au serveur
client_socket.settimeout(1) # Définit une limite de temps pour la réception de données
print("Connected to server")
setup_keyboard_shortcuts()
receive_messages()
except ConnectionRefusedError:
print("Connection refused. Please make sure the server is running.")
# Fonction pour envoyer le message
def send_message():
message = ''.join(buffer[1:]) # Assemble les touches dans un message
data = json.dumps({"user": user, "destination": destination, "message": message}) # Formatte les données en JSON
client_socket.send(data.encode('utf-8')) # Envoie les données au serveur
# Fonction pour recevoir les messages du serveur
def receive_messages():
while True:
try:
res = client_socket.recv(1024) # Reçoit les données du serveur
if res:
print(f"Received message: {res.decode('utf-8')}") # Affiche le message reçu
except socket.timeout:
continue
# Fonction pour configurer les raccourcis clavier
def setup_keyboard_shortcuts():
keyboard.add_hotkey('ctrl+q', lambda: sys.exit(0)) # Permet de quitter le programme avec Ctrl+Q
keyboard.on_press(on_key_event) # Déclenche la fonction on_key_event lorsqu'une touche est pressée
# Fonction pour ajouter une touche au buffer
def add_key_to_buffer(e):
buffer.append({"space": " ", "backspace": ""}.get(e.name, e.name))
# Fonction pour supprimer la dernière touche du buffer
def remove_last_key():
if buffer:
buffer.pop() # Supprime la dernière touche si c'est "backspace"
# Fonction pour effacer le buffer
def clear_buffer():
buffer.clear()
if __name__ == "__main__":
start_client() # Lance le client
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment