72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
|
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}")
|