2015-07-14 10 views
6

E 'possibile in Android indirizzare tutto il traffico di dati in entrata tramite WiFi e tutto il traffico in uscita tramite rete mobile.Dati di downlink del percorso Android via WiFi e dati di uplink tramite rete mobile

Trovato una risposta su stackoverflow How Wifi and Mobile Data both work simultaneously in android for OBD2 device. Ma instrada i dati per un solo host.

C'è anche un'app SuperDownload che utilizza la rete wifi e mobile per ottenere velocità di download più elevate. Sto provando a fare qualcosa di simile.

In Android WiFi e rete mobile non funziona contemporaneamente. È possibile farlo funzionare facendo il rooting del dispositivo? (SuperDownload richiede root).

+0

Stai per creare un'app che farà sì che solo i dati ricevuti arrivino tramite Wi-Fi e inviino i dati tramite i dati mobili? –

+0

Quello che stai chiedendo è in generale impossibile. Il motivo è che il server a cui ci si connette in remoto ha solo l'indirizzo IP di origine dei pacchetti in uscita a cui rispondere. E quelli torneranno alla tua interfaccia mobile (uplink). Dovresti inviare pacchetti con l'IP di origine della tua interfaccia wifi e non puoi farlo. – TvE

risposta

1

Non è facile quello che vorresti fare.

Per prima cosa è necessario mantenere entrambe le interfacce di rete, è possibile ma è un trucco perché Android non lo supporta. Per farlo è necessario accendere

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

Il nome della funzione è legata al proprio hardware, dovrebbe essere enableHIPRI. Il problema è che dopo aver acceso l'interfaccia questo si spegnerà dopo un po 'di tempo, per questo motivo è necessario eseguire una richiesta http ogni 20-30 secondi per tenerlo attivo. In questo modo l'interfaccia rimarrà accesa.

Per il percorso, si dovrebbe aggiungere route statica

connectivityManager.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_HIPRI, ipAddressInt); 

Qualora il ipAddressInt è l'indirizzo che si desidera collegare il 3G. Normalmente i percorsi vengono inviati attraverso il WiFi, quindi per il tuo GET (download su WiFi) non ci sono problemi, ma devi aggiungere un percorso per il caricamento.

E ora ci sono 2 problemi,

  • prima è che in questo modo su 3G la risoluzione DNS è andato, si può lavorare su IP, ma è necessario disporre di un server con IP statico,
  • secondo , Non sono sicuro che funzioni su una porta specifica (questa è l'unica idea che ho in questo momento per farlo ...).

Ovviamente si dovrebbe implementare un altro thread che mantenga viva l'interfaccia.

1

Penso che sia impossibile. Pensa, in che modo la tua destinazione può trovare il percorso delle risposte per consegnarla?

Consentitemi di essere più chiaro, quando si tenta di recuperare qualcosa dalla rete (ad esempio una pagina Web), è necessario inserire il proprio indirizzo IP e l'indirizzo IP di destinazione in un pacchetto e inviarlo alla rete (wifi o 3g) e la rete lo instraderà a destinazione. Quando la tua risposta è pronta, la destinazione inverte il processo e inserisce il tuo indirizzo IP come indirizzo di destinazione e il suo indirizzo IP come sorgente e lo libera nella rete. Di nuovo, la rete utilizzando queste informazioni ti troverà e ti consegnerà il pacchetto. Quindi, non è mai possibile inviare informazioni a una rete (ad esempio, wifi) e ricevere la risposta da un'altra rete (ad esempio 3g).

Nota: se tutti i router di middle way sono a conoscenza del proprio obiettivo (invio e ricezione da e verso due reti diverse), sarà possibile farlo. Attualmente, in alcuni protocolli di routing, specialmente nei router di bordo, che di solito vengono utilizzati dai governi, qualcosa come il tuo obiettivo viene lavorato per consentire loro di superare la velocità limitata dei mezzi di trasmissione, ad es. fibra ottica (per avere più di 10/100 gbps).

Problemi correlati