forked from tanchou/Verilog
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
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()
|