2010-08-18 1 views
18

Supponiamo che, io abbia una connessione TCP che sta effettuando pesanti trasmissioni di dati sulla mia rete 3G; e sono tornato a casa, Android passa automaticamente alla mia casa WiFi. Ora cosa succede alla connessione esistente? è semplicemente disconnettere? o continuerà, solo le nuove connessioni useranno il wifi?Cosa succederà alle connessioni esistenti quando si passa da 3g/wifi

Inoltre, cosa succede se vado via da casa, il segnale wifi perso e passa a 3g? Dovrebbe essere sicuro di indovinare che la connessione è stata interrotta. Per la mia applicazione, devo gestire la riconnessione o esiste una soluzione di ripiego automatico?

Grazie in anticipo.

Hongbo

+0

Interessante domanda. vale un +1 per me;) – Sephy

risposta

9

Il collegamento cadrà perché il dispositivo apparirà in un indirizzo IP diverso, che è come i pacchetti TCP trovare la loro strada.

Non c'è fallback a meno che non lo si codifichi, cosa che si dovrebbe fare comunque se la tua app passa molto tempo su 3G. Va abbastanza bene che le applicazioni desktop facciano "D'oh!" quando il tuo cavo o DSL presenta occasionali problemi, ma le connessioni 3G scendono regolarmente.

1

La stessa cosa succederebbe se si collegasse un portatile da una rete e fosse collegato a un altro. Le connessioni cadono. Le app mobili hanno molte più probabilità di incontrare connessioni cadute/morte, quindi dovrebbero essere codificate di conseguenza. Ad esempio, le app possono registrarsi per modifiche di stato tramite android.net.ConnectivityManager. In alcuni casi potrebbe essere necessario che le app eseguano un controllo di integrità su tutto ciò che scaricano solo in modo che non inizi a provare a eseguire il rendering di un file danneggiato. In altri casi sarebbe una cattiva forma scaricare determinati tipi di dati (ad esempio file di grandi dimensioni) se la connessione avviene tramite 3G.

0

Niente. È necessario enumerare tutti gli indirizzi IP correnti e associarli a ciascuno di essi su socket diversi. E iscriversi alle notifiche Reachability (una sorta di per Android) quando cambia lo stato della rete/indirizzi IP. Il codice dovrebbe funzionare anche su Android. Vedi il mio esempio multipath in questo elenco: https://gist.github.com/avesus/fdb465b60a4f5204845c