Accesso all'host locale del PC da un dispositivo mobile Android collegato tramite USB


88

Ho un dispositivo Android (scheda Samsung Galaxy) collegato al mio PC tramite USB.

Voglio utilizzare WebServices ed eseguire una pagina web che si trova sul mio server xampp locale del mio PC sul mio dispositivo Android.

Posso ottenerlo se ho entrambi, il mio PC e il mio dispositivo Android, collegati alla stessa rete wireless.

Tuttavia è possibile accedere alla pagina localhost senza alcuna connessione wireless, utilizzando solo la connessione USB.

(PS: questo stesso scenario funziona quando eseguo l'app su un emulatore e utilizzo l'ip 10.0.2.2 per accedere all'host locale sul mio PC)


Si prega di utilizzare il link sottostante stackoverflow.com/questions/4779963/… Ha funzionato per me.

1
Disattiva il firewall durante il test della tua pagina web o aggiungi il tuo IP alle reti attendibili nelle impostazioni del firewall.
zeeali

controlla questo blog mycodingchannel.in/blog/… per i dettagli
kontashi35

Risposte:


34

Finalmente ho risolto questo problema. Ho usato Samsung Galaxy S con Froyo. La "porta" sotto è la stessa che usi per l'emulatore (10.0.2.2:port). Cosa ho fatto:

  1. prima collega il tuo dispositivo reale con il cavo USB (assicurati di poter caricare l'app sul tuo dispositivo)
  2. ottenere l'indirizzo IP dal dispositivo che si connette, che inizia con 192.168.xx: porta
  3. apri il "Centro connessioni di rete e condivisione"
  4. fare clic su "Connessione alla rete locale" dal dispositivo e scegliere "Dettagli"
  5. copia l '"indirizzo IPv4" nella tua app e sostituiscilo come segue: http://192.168.x.x:port/test.php
  6. carica la tua app (di nuovo) sul tuo dispositivo reale
  7. vai alle proprietà e attiva "Tethering USB"
  8. eseguire l'applicazione sul dispositivo

Ora dovrebbe funzionare.


Se lo faccio, ottengo un'eccezione host sconosciuta.
AaronF

4
Sembra che questa risposta, mentre funziona, presuppone che il dispositivo Android e il computer siano entrambi collegati a un punto di accesso wireless, il che è contrario a ciò che l'autore sta cercando di ottenere.
Jacobski

3
Va notato che questa è una soluzione solo per Windows.
dotnetCarpenter

2
Sono d'accordo con @Jacob, questo non risponde alla domanda. La domanda stessa afferma che può connettersi tramite wifi.
bradlis7

1
Questo non risponde alla domanda. Questa è la risposta giusta: stackoverflow.com/a/53920173/2947592
wvdz

47

Google ha pubblicato una soluzione per questo tipo di problema qui .

I passi:

  • Collega il tuo dispositivo Android e la tua macchina di sviluppo con il debug USB abilitato
  • Apri Chrome nella tua macchina di sviluppo, apri una nuova scheda, fai clic con il tasto destro nella nuova scheda del browser, fai clic su ispeziona
  • Fare clic sull'icona dei tre punti in alto a destra tre punti, -> Altri strumenti, Dispositivi remoti.
  • Guarda in fondo allo schermo, assicurati che il nome del tuo dispositivo sia visualizzato nell'elenco con un punto di colore verde.
  • Guarda sotto la parte delle impostazioni, controlla il segno di Port forwarding
  • Aggiungi regola. Ad esempio, se il tuo server web python è in esecuzione sul tuo computer localhost: 5000 e desideri accedervi dalla porta 3333 del tuo dispositivo, digita 3333nella parte sinistra, digita localhost:5000e fai clic su aggiungi regola.
  • Voilà, ora puoi accedere al tuo server web dal tuo dispositivo. Prova ad aprire una nuova scheda del browser e visita http: // localhost: 3333 dal tuo dispositivo

Funziona come pubblicizzato. È anche possibile mantenere le porte sul dispositivo e sulla macchina :). (Non sono sicuro del motivo per cui desideri utilizzare un'altra porta sul dispositivo)
Ralf de Kleine

Questa dovrebbe essere la risposta accettata. Se stai utilizzando un certificato autofirmato per il tuo sviluppatore locale, ricorda di aggiungere il protocollo SSL nella scheda Nuovo, ad esempio localhost: 5000 . Funziona perfettamente.
turrican_34

5
"Questo pannello è stato ritirato a favore dell'interfaccia chrome: // inspect / # devices, che ha funzionalità equivalenti." Quindi incolla chrome://inspect/#deviceschrome e vai al passaggio Port forwarding della risposta.
Craastad

Ho appena passato più di un'ora a cercare di capire come far funzionare queste istruzioni ERR_EMPTY_RESPONSEtornando da Chrome sul dispositivo ... finché finalmente mi sono reso conto che non stavo eseguendo il mio server localhost sul desktop e che non c'era nulla da effettivamente connettersi a! Doh! Avviato il server (Apache in questo caso) e tutto ha subito iniziato a funzionare. Un primo passo importante è assicurarsi che il server di destinazione sia effettivamente in esecuzione prima di configurare il port forward.
CubicleSoft

questa è la soluzione migliore
Raul Quispe

16

Ho letto numerosi forum e provato le app di gioco ma non ho trovato una soluzione fino ad ora.

Il mio scenario credo sia simile al tuo, ma chiarirò per aiutare gli altri. Ho un sito Web ospitato localmente e servizi Web che devono essere utilizzati dalla mia applicazione Android. Devo farlo funzionare sulla strada per la dimostrazione con solo il mio laptop e nessuna connessione di rete.

Nota: utilizzare il mio iPhone come hotspot Wi-Fi e collegare sia il mio PC che il mio dispositivo Android ha funzionato, ma la connessione dell'iPhone 4S è lenta e viene interrotta regolarmente.

La mia soluzione è la seguente:

  • Scollegare i cavi di rete sul PC e disattivare il wifi.
  • Disattiva il Wi-Fi sul dispositivo Android
  • Collega Android al PC tramite USB
  • Attiva "Tethering USB" nel menu Android. (In reti-> altro ...-> Tethering e hotspot portatile ")
  • Ottieni l'IP del tuo computer che è stato assegnato dal cavo tether USB. (apri il prompt dei comandi e digita "ipconfig", quindi cerca l'IP assegnato dalla scheda di rete USB)
  • Aprire un browser sul PC utilizzando l'indirizzo IP trovato invece di localhost per eseguire il test. cioèhttp://192.168.1.1/myWebSite
  • Apri un browser su Android e verifica che funzioni

1
Ho Nexus 10 e non riesco a farlo funzionare per me, ma ne ho un disperato bisogno. Nessuna opzione di tethering !?
Ludus H

Anch'io ho un problema in Moto G5 Plus. Assegno è ancora non lavoro.
Jigar Fumakiya

5

Ecco una parte del codice della mia app Android:

Questa app è in grado di comunicare con un modello get-post HTTP tra un servlet in esecuzione su un server e un dispositivo Android collegato in modalità Debuggable USB ( perché l'app era in fase di sviluppo ).

Posso anche eseguire l'app tramite Wi-Fi quando il server, Tomcat Apache 7, è in esecuzione ( quando lo sviluppo dell'app è terminato ).

inserisci qui la descrizione dell'immagine

Per ottenere il tuo indirizzo IP

  1. Vai al prompt dei comandi
  2. genere ipconfig
  3. Premi invio

Nell'elenco, l' indirizzo IPv4 è il tuo IP.


Questo è impreciso. La modalità debuggabile USB non fornisce una connessione di rete, né ADB in avanti consentirà al dispositivo di contattare il PC. A quanto pare, stai utilizzando una connessione di rete tramite USB probabilmente fornita da uno strumento di tethering, non il debug USB. Un'altra opzione è eseguire il tunneling di ssh attraverso un forward ADB.
Chris Stratton

Non volevo dire che la modalità debug USB fornisce una connessione di rete. Ma sfortunatamente, quello era l'unico modo per eseguire alcuni comandi interni provenienti da un progetto di app Android sul server web incorporato in Android Studio. Grazie per la tua preoccupazione, potrebbe creare confusione per i nuovi sviluppatori. Modificata come l'app in fase di sviluppo dei progressi in Android Studio.
cagcak

Non c'è ancora alcuna risposta che fornisca un metodo per ottenere la connettività in questa direzione. La "modalità debuggabile tramite USB" non lo fa, quindi senza una descrizione accurata di come l'hai eseguita , non c'è soluzione qui .
Chris Stratton

4

L'ho fatto su un computer Windows e ha funzionato perfettamente!

Attiva il tethering USB sul tuo cellulare. Digita ipconfig nel prompt dei comandi del tuo computer e trova l'ipv4 per "ethernet adapter local area connection x" (principalmente il primo) Ora vai sul tuo browser mobile, digita quell'ipv4 con il numero di porta della tua applicazione web. ad esempio: - 192.168.40.142:1342

Ha funzionato con quei semplici passaggi!


4

Come accedere facilmente a LocalHost nel dispositivo Android effettivo -> Collega il tuo PC al dispositivo Android tramite USB

  1. Vai all'ispezione di Chrome fai clic su "f12" o Control + Maiusc + C

Strumento di ispezione Chrome

  1. Controlla la parte inferiore dello strumento di ispezione cromata.

  2. Ora vai alle impostazioni nella scheda Dispositivo remoto.

Scheda Dispositivi remoti

  1. controllare l'opzione "Discover USB Device" e selezionare l'opzione "Port Forwarding".

  2. Ora fai clic su Aggiungi regole, inserisci qualsiasi porta del dispositivo ad es. (4880) e in Indirizzo locale inserisci l'indirizzo effettivo dell'host locale nel mio caso ad es. (127.0.0.1:480)

  3. Dopo aver aggiunto la regola, vai al tuo studio Android -> all'interno dell'URL del codice ( http://127.0.0.1:4880 ). Ricordati di cambiare la porta da 480 -> 4880.

  4. Vai alla scheda Dispositivo remoto in Chrome e fai clic sul dispositivo connesso. Aggiungi nuovo URL (127.0.0.1:4880) Ispeziona il browser Chrome del dispositivo Android

Controllare il browser Chrome del dispositivo effettivo e avviare il debug del codice sul dispositivo Android effettivo.


1

Verificare le opzioni del tipo di connessione USB. Dovresti averne uno chiamato "Internet pass through". Ciò consentirà al telefono di utilizzare la stessa connessione del PC.


Questo è l'unico modo che conosco per utilizzare la connessione del PC tramite USB. Quindi per il tuo dispositivo immagino che la risposta sia no. Il simulatore funziona perché condivide la connessione del tuo PC.
codemonkey

So che i nuovi dispositivi HTC con Sense 3 hanno l'opzione (Ex the Sensation)
codemonkey

Grazie mille per l'aiuto . ancora per verificare se una delle opzioni funziona.
saurabh

1

Mi è piaciuta molto la risposta di John, ma vorrei apportarla con alcune modifiche a coloro che vogliono testare alcune configurazioni client / server eseguendo un client TCP sul Mobile connesso USB e un server sul PC locale.

Innanzitutto è abbastanza ovvio che la 10.0.2.2 non funzionerà perché si tratta di un VERO hardware mobile e non di un simulatore.

Quindi segui le istruzioni di John:

  • Scollegare tutti i cavi di rete sul PC e disattivare il wifi.
  • Disattiva il Wi-Fi sul dispositivo Android
  • Collega il dispositivo Android al PC tramite USB
  • Attiva "Tethering USB" (modem USB / modem cellulare USB / USB שימוש כמודם סלולרי) nel menu Android. (In reti-> altro ...-> Tethering e hotspot portatile ")

    • Questa connessione USB fungerà da server DHCP per la tua singola connessione PC, quindi assegnerà al tuo PC un IP dedicato (dinamico) nella sua rete USB locale. Ora tutto quello che devi fare è dire all'applicazione client questo IP e questa porta.
  • Ottieni l'IP del tuo PC (che è stato assegnato dal cavo tether USB.) (Apri il prompt dei comandi e digita "ipconfig" quindi cerca l'IP che l'adattatore di rete USB ha assegnato, in Linux le sue ifconfigo le "Informazioni di connessione" di Ubuntu ecc. ..)

  • Indica all'applicazione di connettersi a quell'IP (cioè 192.168.42.87) con qualcosa di simile (Java - lato client):

    String        serverIP      = "192.168.42.87";
    int           serverPort    = 5544;
    InetAddress   serverAddress = InetAddress.getByName(serverIP);
    Socket        socket         = new Socket(serverAddress, serverPort);
    ...
    

    Godere..


1

Ciao puoi accedere al tuo localhost xampp tramite

  1. Pannello di controllo ->
  2. firewall di Windows Defender ->
  3. Impostazioni avanzate (sul lato sinistro) -> Regole in entrata -> Nuova regola -> Porta -> nella porta locale specifica scrivi le tue porte Apache -> avanti -> poi puoi accedere al tuo host locale utilizzando il PC locale Indirizzo IP:

0

Collegamento del telefono Android tramite cavo USB e accesso al server http sul computer.

  1. Firewall: disattivalo, una volta che tutto funziona puoi aggiungere una regola in Regole in entrata, abilitare Apache HTTP Server (UDP e TCP) (o qualsiasi server HTTP che stai utilizzando) Avviso: se spegni il firewall, il tuo computer diventa vulnerabile agli attacchi di Internet. Quindi spegni Internet e disconnettiti dalla rete prima. Non è necessario essere su Internet perché funzioni, poiché stai collegando due dispositivi alla rete locale.

  2. Collega il cavo USB. Se viene visualizzata la finestra di rete, selezionare Rete domestica. Se non viene visualizzato, probabilmente è impostato su Pubblico (che non funzionerà), quindi vai su: Pannello di controllo \ Rete e Internet \ Centro connessioni di rete e condivisione (in win7) e impostalo su Rete domestica lì. Potrebbe darti una schermata successiva dopo averlo premuto per condividere immagini, musica ... basta fare clic su Annulla su di esso. Nella schermata principale la rete domestica sarà ancora attiva.

  3. È necessario che l'IP del computer, l'host locale o altri alias non funzionino. Per ottenere l'IP della tua macchina, avvia la shell della riga di comando di Windows (premi il tasto Windows + R e digita cmd), dovrebbe apparire la finestra nera del prompt dei comandi, digita: "ipconfig" e premi invio. Adesso cerca

Indirizzo IPv4. . . . . . . . . . . : 192.168. ###. ### Questo è l'IP assegnato dal telefono al computer

  1. Ora dovresti aver finito, nel browser del telefono, prova ad accedere a un file html di prova dal server del tuo computer, dovrebbe essere visualizzato correttamente.

  2. Ora che tutto funziona, probabilmente vorrai abilitare il firewall e l'accesso a Internet sul tuo computer. Ora prova ad accedere di nuovo al tuo server http. Probabilmente non funzionerà. A seconda della configurazione, potresti ricevere un popup che ti chiede di aggiungere una regola per consentirla, ma se non lo fai, aggiungila tu stesso. Avvia il firewall di Windows e vai su Regole in entrata (perché è un server) e aggiungi Nuova regola. Seleziona "Programma". Individua l'exe del tuo server http e nella schermata successiva assicurati che Consenti sia selezionato. Prova a connetterti di nuovo e ora dovrebbe funzionare. In caso contrario, probabilmente è perché hai selezionato l'exe sbagliato. Puoi anche andare più avanzato per limitare l'utilizzo esterno (perché ora tutti su Internet possono accedervi se hanno il tuo indirizzo IP Internet) Per limitare l'accesso puoi fare clic con il tasto destro sulla nuova regola che hai appena creato,

    Nota per gli sviluppatori Android, ora nel tuo codice Android, devi usare "http: //", altrimenti non funzionerà. Ad esempio: MyAsyncTask.execute ("http://192.168.123.123/test.html")

Parte II - Impostazione dell'IP su fisso / statico.

Ora che le cose funzionano, ogni volta che scolleghi il cavo e lo ricolleghi, il tuo IP cambierà. E se lo stai usando da qualche parte come all'interno di un codice, dovrai aggiornarlo ogni volta! La soluzione che ho trovato è impostare l'IP su statico.

  1. Con il telefono connesso e tethering, torna al Centro connessioni di rete e condivisione e fai clic sulla connessione alla rete locale "Connessioni:"

immagine dello schermo

  1. Nella schermata successiva selezionare Proprietà, quindi evidenziare IP 4 e premere proprietà lì e fare clic su "Usa il seguente indirizzo IP"
  2. Metti il ​​gateway predefinito e la subnet mask esattamente come erano in ipconfig e, per l'indirizzo IP, cambia solo le ultime 3 cifre con un valore compreso tra 1 e 255

immagine dello schermo

Quell'IP sarà il tuo nuovo IP fisso / statico e rimarrà lo stesso la prossima volta che colleghi il telefono.


0
  1. Assicurati di avere adb installato sul computer , il debug USB abilitato sul telefono e il telefono ha consentito l'accesso al computer. Collega il telefono al computer tramite cavo USB e assicurati che sia visibile (dovrebbe essere visualizzato nel comando Bash adb devices.
  2. Nel browser Chrome del tuo computer, apri chrome: // inspect / # devices , fai clic sul pulsante "Port forwarding", seleziona "Abilita port forwarding" e aggiungi la porta del computer a cui desideri sia accessibile dal telefono ( istruzioni dettagliate Qui ). Dovrai tenere aperta la scheda che esegue chrome: // inspect / # devices.
  3. Nel browser del tuo telefono, vai a localhost: [port_number] e dovrebbe visualizzare tutto ciò che è in esecuzione sul computer.

Funziona su Windows e Ubuntu Linux e dovrebbe funzionare anche su Mac.


0

Il problema che ho affrontato forse aiuterà qualcuno, stavo lavorando da molto tempo in cui il mio PC e il mio dispositivo Android erano collegati alla stessa rete WiFi e il dispositivo Android collegato tramite l'indirizzo IPV4 del PC con la porta 8080 aperta attraverso il firewall.

UN GIORNO: ho installato l'emulatore Genmony per eseguire il debug dell'interfaccia utente su schermi diversi. GRAZIE alle configurazioni di rete Genmony / Virtualbox ha rovinato il mio adattatore WiFi.

La soluzione era riconfigurare le impostazioni IPV4 / TCP sull'adattatore di rete WiFi:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.