import socket, json from lector import * # Clase Cliente para la conexión y generación de ondas class Cliente: def __init__(self, host, port): self.host = host self.port = port self.socket = None def conectar(self): """Conecta al servidor de forma persistente""" try: self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket.connect((self.host, self.port)) print("Conectado al servidor") except ConnectionError as e: print(f"Error al conectar con el servidor: {e}") def escuchar_y_responder(self): """Escucha solicitudes del servidor y responde con datos generados""" try: while True: # Escucha de forma continua para recibir la solicitud de medición del servidor print("Esperando solicitud de medición del servidor...") data = self.socket.recv(1024) if data: print("Solicitud recibida del servidor:", data.decode('utf-8')) request_vars = json.loads(data.decode('utf-8')) if request_vars == 'Apagate': break self.mandar_datos(request_vars) except Exception as e: print(f"Error en la conexión con el servidor: {e}") finally: self.socket.close() print("Conexión cerrada con el servidor") def mandar_datos(self, request_vars): """Genera los datos de las ondas según las variables recibidas y los envía al servidor""" fs = request_vars.get('Velocidad Muestreo', 1e3) # Frecuencia de muestreo en Hz, valor estandar 1e3 size = request_vars.get('Numero Muestras', 50) # Número de muestras, valor estandar 50 paquete = generar_paquete_ejemplo(fs, size) # Envía los datos de vuelta al servidor self.mandar_paquete(paquete) def mandar_paquete(self, data): """Envía el JSON generado al servidor en la misma conexión""" try: json_data = json.dumps(data) + "\n" # Añadimos el delimitador al final del mensaje self.socket.sendall(json_data.encode('utf-8')) print("Datos enviados al servidor") except Exception as e: print(f"Error al enviar datos al servidor: {e}")