2015-07-14 11 views
6

Czy w Androidzie możliwe jest kierowanie całym przychodzącym ruchem danych przez Wi-Fi i cały ruch wychodzący przez sieć komórkową.Dane w łączu w dół z systemu Android za pośrednictwem WiFi i danych w łączu w górę za pośrednictwem sieci komórkowej

Znaleziono odpowiedź na stackoverflow How Wifi and Mobile Data both work simultaneously in android for OBD2 device. Ale robi dane trasy tylko dla jednego hosta.

Istnieje również aplikacja SuperDownload, która wykorzystuje sieć Wi-Fi i komórkową, aby osiągnąć większą prędkość pobierania. Próbuję coś takiego zrobić.

W systemie Android sieć Wi-Fi i komórkowa nie działają jednocześnie. Czy jest możliwe, aby działał przez zrootowanie urządzenia? (SuperDownload wymaga root).

+0

Chcesz utworzyć aplikację, która spowoduje, że tylko odbierane dane będą przesyłane przez Wi-Fi i wysyłać dane przez komórkową transmisję danych? –

+0

To, o co prosisz, w ogóle nie jest możliwe. Powodem jest to, że serwer, z którym łączysz się na samym końcu, ma tylko źródłowy adres IP twoich wychodzących pakietów, na które chcesz odpowiedzieć. A to spowoduje powrót do twojego mobilnego (uplink) interfejsu. Będziesz musiał wysyłać pakiety ze źródłowym IP twojego interfejsu Wi-Fi i nie możesz tego zrobić. – TvE

Odpowiedz

1

To nie jest łatwe, co zrobiłbyś.

Najpierw musisz zachować oba interfejsy sieciowe, jest to możliwe, ale jest to włamanie, ponieważ Android go nie obsługuje. Aby to zrobić należy włączyć

connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "feature"); 

Nazwa cechą jest związane ze sprzętem, należy enableHIPRI. Problem polega na tym, że po włączeniu interfejsu zostanie on po pewnym czasie wyłączony, dlatego należy wykonywać żądanie http co 20-30 sekund, aby go utrzymać. W ten sposób interfejs pozostanie włączony.

do trasy, należy dodać trasę statyczną

connectivityManager.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, ipAddressInt); 

Jeżeli ipAddressInt to adres, który chcesz podłączyć na 3G. Zwykle trasy są wysyłane przez WiFi, więc dla twojego GET (pobierz na WiFi) nie ma problemu, ale powinieneś dodać trasę do przesłania.

I teraz są 2 problemy,

  • pierwszy jest to, że w ten sposób na 3G rozdzielczość DNS nie ma, można pracować na IP, ale trzeba mieć serwer z statycznego IP,
  • sekund , Nie jestem pewien, czy działa na konkretnym porcie (to jedyny pomysł, jaki mam w tym momencie, aby to zrobić ...).

Oczywiście powinieneś zaimplementować inny wątek, który utrzyma przy życiu interfejs.

1

Myślę, że to niemożliwe. Zastanów się, w jaki sposób twój cel może znaleźć ścieżkę odpowiedzi, aby go dostarczyć?

Pozwolę sobie być bardziej zrozumiałym, gdy próbujesz pobrać coś z sieci (np. Ze strony internetowej), powinieneś umieścić swój adres IP i docelowy adres IP w pakiecie i wysłać go do sieci (wifi lub 3g) i sieć przekieruje go do miejsca docelowego. Kiedy twoja odpowiedź stanie się gotowa, miejsce docelowe odwraca proces i umieszcza twój adres IP jako adres docelowy i jego adres IP jako źródło i uwalnia go do sieci. Ponownie, sieć wykorzystując te informacje znajdzie cię i dostarczy pakiet do ciebie. W związku z tym nie można wysyłać informacji do sieci (np. Wi-Fi) i otrzymywać odpowiedzi z innej sieci (np. 3g).

Uwaga: Jeśli wszystkie pośrednie routery dowiedzą się o Twoim celu (wysyłanie i odbieranie do dwóch różnych sieci), będzie to możliwe. Obecnie w niektórych protokołach routingu, zwłaszcza w routerach brzegowych, które zwykle są używane przez rządy, opracowano coś takiego, jak cel, aby pozwolić im przezwyciężyć ograniczoną prędkość mediów transmisyjnych, np. światłowód (ma więcej niż 10/100 Gb/s).

Powiązane problemy