2010-08-18 11 views
18

Supongamos que tengo una conexión TCP que transmite datos pesados ​​en mi red 3G; y caminé a casa, Android cambia a mi casa wifi automáticamente. Ahora, ¿qué ocurre con la conexión existente? es simplemente desconectar? o seguirá funcionando, ¿solo las nuevas conexiones usarán wifi?¿Qué pasará con las conexiones existentes cuando cambie entre 3g/wifi?

Además, ¿qué sucede si me alejo de mi casa, wifi perdió la señal y cambio a 3g? Debería ser seguro adivinar que se ha eliminado la conexión. Para mi aplicación, ¿necesito manejar la reconexión o hay una solución automática de recuperación?

Gracias de antemano.

Hongbo

+0

Interesante pregunta. eso vale un +1 para mí;) – Sephy

Respuesta

9

La conexión se reducirá debido a que su dispositivo aparecerá en una dirección IP diferente, que es como paquetes TCP a encontrar su camino.

No hay recuperación a menos que la codifique, lo que debe hacer de todos modos si su aplicación pasa mucho tiempo en 3G. Está bastante bien que las aplicaciones de escritorio digan "D'oh!" cuando su Cable o DSL tiene el tropiezo ocasional, pero las conexiones 3G disminuyen rutinariamente.

1

Lo mismo sucedería si conectara una computadora portátil de una red y conectara otra. Las conexiones caerían. Las aplicaciones móviles tienen muchas más probabilidades de encontrar conexiones caídas/muertas, por lo que deben codificarse en consecuencia. Por ejemplo, las aplicaciones pueden registrarse para cambios de estado a través de android.net.ConnectivityManager. En algunos casos, puede ser necesario que las aplicaciones realicen una comprobación de integridad de todo lo que descarguen para que no comiencen a tratar de procesar un archivo roto. En otros casos, sería una mala forma descargar ciertos tipos de datos (por ejemplo, archivos grandes) si la conexión es a través de 3G.

0

Nada. Debería enumerar todas las direcciones IP actuales y vincularlas a cada una de ellas en diferentes sockets. Y suscríbase a las notificaciones de Accesibilidad (una especie de Android) cuando cambian las direcciones de estado/IP de la red. El código debería funcionar en Android también. Ver mi ejemplo de multirruta en esta esencia: https://gist.github.com/avesus/fdb465b60a4f5204845c

Cuestiones relacionadas