2010-08-18 12 views
18

Załóżmy, że mam połączenie TCP, które wykonuje ciężką transmisję danych w mojej sieci 3G; i poszedłem do domu, Android automatycznie przełączył się na mój domowy Wi-Fi. Co się stało z istniejącym połączeniem? czy po prostu się rozłącza? lub będzie kontynuować, tylko nowe połączenia będą korzystać z wifi?Co stanie się z istniejącymi połączeniami przy przełączaniu między 3g/wifi

Co więcej, jeśli odejdę z domu, utracę sygnał wifi i przejdę na 3g? Powinno być bezpieczne odgadnięcie, że połączenie zostało przerwane. Do mojej aplikacji, czy muszę obsługiwać ponowne połączenie lub istnieje rozwiązanie automatycznego wycofania?

Z góry dziękuję.

Hongbo

+0

Interesujące pytanie. to dla mnie warte +1;) – Sephy

Odpowiedz

9

Połączenie spadnie ponieważ urządzenie pojawi się na inny adres IP, który jest jak pakiety TCP znaleźć drogę.

Nie ma rezerwy, chyba że zostanie ona zakodowana, co należy zrobić, jeśli aplikacja spędza dużo czasu w sieci 3G. Jest całkiem OK, jeśli aplikacje na komputer pójdą "D'oh!" kiedy Twój kabel lub DSL ma sporadyczne problemy, ale połączenia 3G znikają rutynowo.

1

To samo by się stało, gdybyś wyłączył laptopa z jednej sieci i podłączył inny. Połączenia spadną. Aplikacje mobilne są znacznie bardziej narażone na zrzucone/martwe połączenia, więc powinny być odpowiednio zakodowane. Na przykład aplikacje mogą rejestrować się w celu zmiany statusu przez android.net.ConnectivityManager. W niektórych przypadkach może być konieczne, aby aplikacje przeprowadzały kontrolę integralności wszystkich pobranych elementów, aby nie próbowały renderować uszkodzonego pliku. W innych przypadkach pobieranie niektórych rodzajów danych (na przykład dużych plików) byłoby złym rozwiązaniem, jeśli połączenie odbywa się przez 3G.

0

Nic. Powinieneś wyliczyć wszystkie aktualne adresy IP i powiązać je z każdym z nich na różnych gniazdach. Zapisz się do powiadomień o osiągnięciu (coś w rodzaju Androida), gdy zmienia się stan sieci/adresy IP. Kod powinien również działać w systemie Android. Zobacz mój przykład wielościeżkowy w tym zakresie: https://gist.github.com/avesus/fdb465b60a4f5204845c

Powiązane problemy