Descripción General
Little Social Network es una plataforma de mensajería y red social básica construida bajo una arquitectura Cliente/Servidor orientada a objetos. El proyecto se centra en aplicar conceptos avanzados de redes, concurrencia, serialización binaria y diseño de interfaces gráficas.
El sistema permite el registro e inicio de sesión de usuarios, administración de perfiles personales y mensajería privada en tiempo real mediante conexiones de red sockets persistentes.
Arquitectura y Componentes
Servidor Concurrente (Multithreading)
Gestor centralizado responsable de la lógica de negocio y estado del sistema.
- Atención concurrente de múltiples clientes en paralelo mediante hilos.
- Persistencia de datos: Almacenamiento eficiente de cuentas, perfiles y mensajes en archivos binarios.
- Manejo de sincronización mediante primitivas de control de concurrencia.
Cliente Gráfico (Qt GUI)
Interfaz gráfica intuitiva desarrollada con el framework Qt para la interacción del usuario.
- Vistas dinámicas para autenticación (Login/Register), lista de contactos y chat activo.
- Comunicación asíncrona mediante hilos secundarios para mantener la fluidez de la UI.
Capa de Red y Protocolo Personalizado
Sistema de intercambio de datos sobre Sockets TCP/IP.
- Serialización binaria: Empaquetado de estructuras complejas (paquetes) para transmisión optimizada por red.
- Protocolo orientado a eventos con tipado explícito de payloads (solicitud de chat, autenticación, estado).
Aspectos Técnicos y Deuda Técnica
Serialización Manual vs. Estándar: El protocolo binario implementado a mano permitió entender a fondo la manipulación de bytes en red. En proyectos de mayor escala, una refactorización idónea sería adoptar librerías estándar como Protocol Buffers (Protobuf) o FlatBuffers para simplificar el mantenimiento.
Escalabilidad del Almacenamiento: La persistencia actual en archivos binarios a medida demuestra el uso de Streams de E/S en C++, pero escalar hacia un motor de base de datos relacional (como SQLite o PostgreSQL) aportaría transaccionalidad ACID y soporte para consultas complejas.