import socket import sys import threading import select # Adresse du serveur SERVER_IP = "192.168.1.105" SERVER_PORT = 1234 def recv_loop(sock): """Écoute les données reçues du socket et les affiche en hexadécimal""" while True: try: data = sock.recv(1024) if not data: print("Déconnecté du serveur") break print("Reçu :", ' '.join(f"{b:02X}" for b in data)) except Exception as e: print("Erreur réception :", e) break def main(): # Connexion au serveur sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((SERVER_IP, SERVER_PORT)) print(f"Connecté à {SERVER_IP}:{SERVER_PORT}") # Lancer la boucle de réception dans un thread séparé threading.Thread(target=recv_loop, args=(sock,), daemon=True).start() print("Tape des chiffres hexadécimaux (0-9, A-F). Ctrl+C pour quitter.") try: while True: # Lire un seul caractère sans attente (mode ligne) rlist, _, _ = select.select([sys.stdin], [], [], 0.1) if rlist: char = sys.stdin.readline().strip().upper() if len(char) == 0: continue for c in char: if c in "0123456789ABCDEF": value = int(c, 16) sock.send(bytes([value])) print(f"Envoyé : {value:02X}") else: print(f"Ignoré : {c} (non hexadécimal)") except KeyboardInterrupt: print("\nDéconnexion") sock.close() if __name__ == "__main__": main()