Hubieron muchos desafios, como por ejemplo usar un lenguaje de programación completamente nuevo y aprenderlo de manera autodidacta.
Sin embargo el desafio mas grande fue conseguir la conexión entre cliente - servidor en redes distintas:
Para entender la dificultad, primero hay que saber los conceptos básicos. Cada equipo tiene dos IPS distintas.
La IP pública es la dirección visible externamente y la que permite que otros dispositivos en internet se comuniquen con nuestra red.
En cambio, la IP privada es asignada a cada dispositivo dentro de la red local y permite que estos dispositivos se comuniquen entre sí
sin exponerse directamente a internet. En la mayoría de los casos, tanto la IP pública como la privada suelen ser dinámicas, es decir,
cambian cada cierto tiempo. Esto es gestionado por el proveedor de internet (ISP) para optimizar su propio uso de direcciones IP y
reducir costos. Sin embargo, las IP dinámicas pueden causar problemas para establecer conexiones consistentes a lo largo del tiempo,
ya que la dirección puede variar y hacer que las configuraciones se desajusten.
Para habilitar la comunicación cliente-servidor en este proyecto, fue necesario habilitar port forwarding (redireccionamiento de puertos)
en el router.
El problema radicaba en que mi ISP bloqueaba el port forwarding, lo cual impedía que las solicitudes entrantes llegaran al puerto del servidor
a pesar de haber configurado todo correctamente. Debido a estos obstáculos, decidí utilizar una VPN (Red Privada Virtual).
Las VPN ofrecen una solución eficaz en estos casos, ya que, al conectarse a una VPN, el servicio proporciona una IP pública fija y,
en muchos casos, un puerto abierto. Esto facilita la conexión, ya que la IP permanece estable y evita el bloqueo del port forwarding por
parte del ISP. Además, la VPN proporciona una capa adicional de seguridad, ya que cifra el tráfico entre el cliente y el servidor,
minimizando el riesgo de interceptación de datos.