2010-08-18 7 views
18

Angenommen, ich habe eine TCP-Verbindung, die schwere Daten auf meinem 3G-Netzwerk übertragen; und ich ging nach Hause, Android schaltet automatisch zu meinem Haus Wifi. Was passiert jetzt mit der bestehenden Verbindung? ist es einfach trennen? oder es wird weitergehen, nur neue Verbindungen werden WLAN nutzen?Was wird mit bestehenden Verbindungen passieren, wenn zwischen 3g/wifi wechseln

Zusätzlich, was passiert, wenn ich weg von zu Hause gehe, WLAN Signal verloren und zu 3g wechseln? Es sollte sicher sein, dass die Verbindung verloren gegangen ist. Muss ich für meine Anwendung die Wiederverbindung durchführen oder gibt es eine automatische Rückfalllösung?

Vielen Dank im Voraus.

Hongbo

+0

Interessante Frage. das ist eine +1 für mich wert;) – Sephy

Antwort

9

Die Verbindung wird gelöscht werden, da das Gerät mit einer anderen IP-Adresse angezeigt wird, die ist, wie TCP-Pakete ihren Weg zu finden.

Es gibt keinen Fallback, es sei denn, Sie kodieren es, was Sie ohnehin tun sollten, wenn Ihre App viel Zeit mit 3G verbringt. Für Desktop-Anwendungen ist es durchaus in Ordnung, "D'oh!" wenn Ihr Kabel oder DSL gelegentlich Schluckauf hat, aber 3G-Verbindungen routinemäßig abfallen.

1

Das gleiche würde passieren, als wenn Sie einen Laptop aus einem Netzwerk ausstecken und einen anderen einstecken. Verbindungen würden fallen. Bei mobilen Apps ist es sehr viel wahrscheinlicher, dass es zu Drop/Dead-Verbindungen kommt, daher sollten sie entsprechend codiert werden. Zum Beispiel könnten sich Apps über android.net.ConnectivityManager für Statusänderungen registrieren. In einigen Fällen ist es möglicherweise erforderlich, dass Apps bei jedem Download eine Integritätsprüfung durchführen, damit sie nicht versuchen, eine beschädigte Datei zu rendern. In anderen Fällen wäre es eine schlechte Form, bestimmte Arten von Daten (z. B. große Dateien) herunterzuladen, wenn die Verbindung über 3G erfolgt.

0

Nichts. Sie sollten alle aktuellen IP-Adressen aufzählen und an jeden von ihnen unter verschiedenen Sockets binden. Und abonnieren Sie Erreichbarkeitsbenachrichtigungen (eine Art für Android), wenn sich Netzwerkstatus/IP-Adressen ändern. Code sollte auch in Android funktionieren. Sehen Sie mein multipath Beispiel in diesem Geist: https://gist.github.com/avesus/fdb465b60a4f5204845c

Verwandte Themen