Skip to content

Sincronizacion LAN

David Mendez edited this page Jul 18, 2026 · 1 revision

๐Ÿ”„ Sincronizaciรณn LAN

Archivo: ui/sync_dialog.py ยท Clase: SyncDialog ยท 276 lรญneas

La sincronizaciรณn LAN permite transferir sesiones de telemetrรญa entre dos dispositivos conectados a la misma red local, de forma bidireccional y automรกtica.


Vista General

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Dispositivos en tu Red Local                    โ”‚
โ”‚                                                  โ”‚
โ”‚  ๐Ÿ” Buscando...                                  โ”‚
โ”‚                                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ ๐Ÿ–ฅ๏ธ  MacBook-Pro  (192.168.1.105)          โ”‚  โ”‚
โ”‚  โ”‚     โ€” 47 sesiones                          โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค  โ”‚
โ”‚  โ”‚ ๐Ÿ–ฅ๏ธ  Gaming-PC  (192.168.1.110)            โ”‚  โ”‚
โ”‚  โ”‚     โ€” 23 sesiones                          โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                  โ”‚
โ”‚  โ”Œโ”€ Resumen de Sincronizaciรณn โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ โ†’ Sesiones a enviar: 12                   โ”‚  โ”‚
โ”‚  โ”‚ โ† Sesiones a recibir: 8                   โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚                                                  โ”‚
โ”‚  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–‘โ–‘โ–‘โ–‘โ–‘ 67%               โ”‚
โ”‚                                                  โ”‚
โ”‚  โœ… Sincronizaciรณn completada                    โ”‚
โ”‚                                                  โ”‚
โ”‚                    [๐Ÿ”„ Sincronizar]  [Cerrar]    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Dimensiones

Propiedad Valor
Tamaรฑo mรญnimo 520 ร— 480 px
Tipo QDialog modal

Elementos de la Interfaz

Elemento Widget Descripciรณn
Tรญtulo QLabel bold 16pt "Dispositivos en tu Red Local"
Estado bรบsqueda QLabel "๐Ÿ” Buscando..." โ†’ "โœ… X dispositivo(s) encontrado(s)"
Lista de peers QListWidget Items con formato: ๐Ÿ–ฅ๏ธ hostname (ip) โ€” N sesiones
Resumen sync QGroupBox Oculto hasta comparar. Muestra envรญo (azul) y recepciรณn (verde)
Barra progreso QProgressBar Oculta hasta iniciar sync. Estilo acento azul.
Estado QLabel centrado Mensajes de conexiรณn, transferencia, completado o error
Sincronizar QPushButton verde Deshabilitado hasta seleccionar un peer
Cerrar QPushButton gris Cierra el diรกlogo

Puertos de Red

Puerto Protocolo Direcciรณn Funciรณn
33741 UDP Broadcast bidireccional Descubrimiento de peers
33742 TCP Bidireccional punto a punto Transferencia de datos

โš ๏ธ Estos puertos estรกn reservados para GT7 Telemetry Pro. No deben reutilizarse.


Servicios de Red (iniciados al abrir el diรกlogo)

1. PeerDiscovery (QThread)

  • Envรญa beacons UDP broadcast en el puerto 33741
  • Escucha beacons de otros dispositivos
  • Filtra IPs locales para evitar auto-descubrimiento
  • Emite peer_found(hostname, ip, session_count, port) y peer_lost(ip)

2. SyncServer (QThread)

  • Servidor TCP escuchando en el puerto 33742
  • Acepta conexiones entrantes de otros peers
  • Atiende solicitudes de comparaciรณn y transferencia

3. SyncClient (QThread)

  • Se crea al hacer click en "Sincronizar"
  • Conecta al peer seleccionado vรญa TCP 33742
  • Ejecuta el protocolo de sincronizaciรณn bidireccional

Protocolo de Sincronizaciรณn

Fase 1 โ€” Comparaciรณn

Client                          Server
  โ”‚                               โ”‚
  โ”‚โ”€โ”€ LIST_SESSIONS โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ   โ”‚
  โ”‚                               โ”‚
  โ”‚   โ—„โ”€โ”€โ”€โ”€โ”€โ”€ SESSION_LIST โ”€โ”€โ”€    โ”‚  (lista de (start_time, car_id))
  โ”‚                               โ”‚
  โ”‚โ”€โ”€ COMPARISON_RESULT โ”€โ”€โ”€โ”€โ”€โ”€โ–บ   โ”‚  (sesiones faltantes en cada lado)

Fase 2 โ€” Transferencia Bidireccional

  โ”‚                               โ”‚
  โ”‚   โ—„โ”€โ”€ SEND_SESSION_DATA โ”€โ”€    โ”‚  โ† Recibir sesiones del peer
  โ”‚       (por cada sesiรณn)       โ”‚
  โ”‚                               โ”‚
  โ”‚โ”€โ”€ SEND_SESSION_DATA โ”€โ”€โ”€โ”€โ”€โ”€โ–บ   โ”‚  โ†’ Enviar sesiones al peer
  โ”‚       (por cada sesiรณn)       โ”‚

Formato del Mensaje TCP

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ 4 bytes      โ”‚ N bytes                  โ”‚
โ”‚ (big-endian) โ”‚ (zlib compressed)        โ”‚
โ”‚ longitud     โ”‚ JSON payload             โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
  • Los BLOBs de telemetrรญa (raw_packet) se serializan como hex strings dentro del JSON
  • El paquete completo se comprime con zlib nivel 6
  • Detecciรณn de duplicados por clave natural: (start_time, car_id)

Reglas de Sincronizaciรณn

Regla Descripciรณn
Bidireccional Primero recibe del peer, luego envรญa
Sin duplicados Usa (start_time, car_id) como clave natural
Protecciรณn de bloqueo Sesiones con is_locked = 1 se sincronizan pero NUNCA se sobrescriben
Re-mapeo de IDs Los session_id autoincrementales se re-mapean al importar

Seรฑales del SyncClient

Seรฑal Datos UI Update
comparison_ready (to_send, to_receive) Muestra resumen de sync
transfer_progress percent (int) Actualiza barra de progreso
sync_complete (sent_count, received_count) Mensaje de รฉxito
error_occurred error_message (str) Diรกlogo de error

Limpieza

Al cerrar el diรกlogo (closeEvent):

  1. Detiene SyncClient (si existe) + espera 2s
  2. Detiene PeerDiscovery + espera 2s
  3. Detiene SyncServer + espera 2s

Clone this wiki locally