Al descargar datos en un teléfono Android, cambiar de 4G a servicio Wi-Fi da como resultado un error de “socket cerrado”. ¿Qué significa exactamente este error?

Se produce una descarga a través de una conexión persistente. Cuando solicita que se descargue un archivo, el cliente (es decir, su aplicación / navegador) establece una conexión con el servidor que tiene (sirve) el archivo. Una vez que el servidor y el cliente acuerdan el protocolo, la autenticación, el cifrado, etc. (llamado protocolo de enlace), se establece una conexión. Piense en la conexión como una tubería virtual entre el cliente y el servidor. La transferencia de archivos real comienza a través de esta conexión y continúa hasta que el cliente o el servidor cierran la sesión y dicen que han terminado. El cliente y el servidor tienen lo que se llama el socket en su lado de la conexión. Piense en un receptáculo como el grifo o la válvula que puede abrir o cerrar al final de la tubería. Cuando termina la conexión, el zócalo también se cierra. Las cosas no funcionan tan bien todo el tiempo. Muchas veces, el servidor o el cliente se bloquea, hay una falla de red, un tiempo de espera o cualquiera de los diversos escenarios de error en los que la conexión se cierra abruptamente sin un mensaje de cierre adecuado.

Cuando pasa de 3G / 4G a Wifi (o viceversa), esencialmente está obligando a cerrar cualquier conexión existente. No puede transferir una conexión de una red a otra. Esto debería significar que los sockets abiertos antes del cambio tendrán sus sockets cerrados en el cliente. El servidor o la aplicación no pueden localizar el socket que estaba usando hasta entonces, por lo que arroja un error.