Acceder al host local de la PC desde un dispositivo móvil Android conectado por USB

86

Tengo un dispositivo Android (Samsung Galaxy Tab) conectado a mi PC a través de USB.

Quiero usar WebServices y ejecutar una página web que se encuentra en mi servidor xampp local de mi PC en mi dispositivo Android.

Puedo lograrlo si tengo ambos, mi PC y mi dispositivo Android, conectados en la misma red inalámbrica.

Sin embargo, es posible acceder a la página localhost sin ninguna conexión inalámbrica, utilizando solo una conexión USB.

(PD: este mismo escenario funciona cuando ejecuto la aplicación en un emulador y uso la ip 10.0.2.2 para acceder al localhost en mi PC)

saurabh
fuente
Utilice el siguiente enlace stackoverflow.com/questions/4779963/… Funcionó para mí.
1
Apague el firewall mientras prueba su página web o agregue su IP a las redes confiables en la configuración del firewall.
Zeeali
echa un vistazo a este blog mycodingchannel.in/blog/… para más detalles
kontashi35

Respuestas:

34

Finalmente resolví este problema. Usé Samsung Galaxy S con Froyo. El "puerto" a continuación es el mismo puerto que usa para el emulador (10.0.2.2:port). Lo que hice:

  1. primero conecte su dispositivo real con el cable USB (asegúrese de que puede cargar la aplicación en su dispositivo)
  2. obtenga la dirección IP del dispositivo que conecta, que comienza con 192.168.xx: puerto
  3. abre el "Centro de redes y recursos compartidos"
  4. haga clic en "Conexión de área local" en el dispositivo y seleccione "Detalles"
  5. copie la "dirección IPv4" en su aplicación y reemplácela como: http://192.168.x.x:port/test.php
  6. sube tu aplicación (de nuevo) a tu dispositivo real
  7. ve a propiedades y activa "Anclaje a red USB"
  8. ejecuta tu aplicación en el dispositivo

Ahora debería funcionar.

Zsivics Sanel
fuente
Si hago esto, obtengo una excepción de host desconocida.
AaronF
4
Parece que esta respuesta, mientras funciona, asume que el dispositivo Android y la computadora están conectados a un punto de acceso inalámbrico, lo que es contrario a lo que el autor está tratando de lograr.
Jacob
2
Cabe señalar que esta es una solución exclusiva de Windows.
dotnetCarpenter
2
Estoy de acuerdo con @Jacob, esto no responde a la pregunta. La pregunta en sí afirma que puede conectarse a través de wifi.
bradlis7
1
Esto no responde a la pregunta. Esta es la respuesta correcta: stackoverflow.com/a/53920173/2947592
wvdz
44

Google publicó una solución para este tipo de problema aquí .

Los pasos:

  • Conecte su dispositivo Android y su máquina de desarrollo con la depuración USB habilitada
  • Abra Chrome en su máquina de desarrollo, abra una nueva pestaña, haga clic derecho en la nueva pestaña del navegador, haga clic en inspeccionar
  • Haga clic en el icono de tres puntos en la parte superior derecha tres puntos , -> Más herramientas, Dispositivos remotos.
  • Mire en la parte inferior de la pantalla, asegúrese de que el nombre de su dispositivo aparezca en la lista con un punto de color verde.
  • Mire a continuación en la parte de configuración, verifique la marca de reenvío de puertos
  • Agregar regla. Por ejemplo, si su servidor web Python se está ejecutando en su máquina localhost: 5000 y desea acceder a él desde el puerto de su dispositivo 3333, escriba 3333en la parte izquierda, escriba localhost:5000y haga clic en agregar regla.
  • Voila, ahora puede acceder a su servidor web desde su dispositivo. Intente abrir una nueva pestaña del navegador y visite http: // localhost: 3333 desde su dispositivo
Alfat Saputra Harun
fuente
Funciona como se anuncia. También es posible mantener los puertos en el dispositivo y la máquina iguales :). (No estoy seguro de por qué desea usar otro puerto en el dispositivo)
Ralf de Kleine
Esta debería ser la respuesta aceptada. Si está utilizando un certificado autofirmado para su desarrollador local, recuerde agregar el protocolo SSL en la pestaña Nueva, por ejemplo, localhost: 5000 . Funciona perfectamente.
turrican_34
4
"Este panel ha quedado obsoleto en favor de la interfaz chrome: // inspeccionar / # dispositivos, que tiene una funcionalidad equivalente". Así que simplemente pegue chrome://inspect/#devicesen Chrome y salte al paso de reenvío de puertos de la respuesta.
craastad
Pasé más de una hora tratando de averiguar cómo hacer que estas instrucciones funcionen al ERR_EMPTY_RESPONSEregresar de Chrome al dispositivo ... hasta que finalmente me di cuenta de que no estaba ejecutando mi servidor localhost en mi escritorio y que no había nada realmente conectarse a! Doh! Arrancó el servidor (Apache en este caso) y todo empezó a funcionar inmediatamente. Un primer paso importante es asegurarse de que su servidor de destino se esté ejecutando antes de configurar el reenvío de puertos.
CubicleSoft
esta es la mejor solución
Raul Quispe
16

Leí numerosos foros y probé aplicaciones de juego, pero no encontré una solución hasta ahora.

Mi escenario creo que es similar al tuyo, pero lo aclararé para ayudar a los demás. Tengo un sitio web alojado localmente y servicios web para ser utilizados por mi aplicación de Android. Necesito tener esto funcionando en el camino para la demostración con solo mi computadora portátil y sin conexión de red.

Nota: Usar mi iPhone como punto de acceso wifi y conectar mi PC y mi dispositivo Android funcionó, pero la conexión del iPhone 4S es lenta y se desconecta regularmente.

Mi solución es la siguiente:

  • Desenchufe los cables de red de la PC y apague el wifi.
  • Apague el wifi en el dispositivo Android
  • Conecte Android a la PC a través de USB
  • Activa "Anclaje a red USB" en el menú de Android. (En redes-> más ...-> Tethering y hotspot portátil ")
  • Obtenga la IP de su computadora que ha sido asignada por el cable de conexión USB. (abra el símbolo del sistema y escriba "ipconfig", luego busque la IP que el adaptador de red USB ha asignado)
  • Abra un navegador en la PC usando la dirección IP encontrada en lugar de localhost para probar. es decirhttp://192.168.1.1/myWebSite
  • Abra un navegador en Android y pruebe que funciona
Juan
fuente
1
Tengo Nexus 10 y no puedo hacer que funcione para mí, pero lo necesito desesperadamente. ¿No hay opción de anclaje?
Ludus H
También tengo un problema en moto g5s plus. Lo asigno todavía no funciona.
Jigar Fumakiya
5

Aquí hay una parte del código de mi aplicación de Android:

Esta aplicación puede comunicarse con un modelo HTTP get-post entre un servlet que se ejecuta en un servidor y un dispositivo Android conectado en modo depurable por USB ( porque la aplicación estaba en proceso de desarrollo ).

También puedo ejecutar la aplicación a través de Wi-Fi cuando el servidor, Tomcat Apache 7, se está ejecutando ( cuando finalizó el desarrollo de la aplicación ).

ingrese la descripción de la imagen aquí

Para obtener su dirección IP

  1. Ir al símbolo del sistema
  2. Tipo ipconfig
  3. Presione enter

En la lista, la dirección IPv4 es su IP.

cagcak
fuente
Esto es inexacto. El modo depurable USB no proporciona una conexión de red, ni ADB forwards permitirá que el dispositivo se comunique con la PC. Según las apariencias, está utilizando una conexión de red a través de USB probablemente proporcionada por una herramienta de anclaje, no por depuración de USB. Otra opción es hacer un túnel ssh a través de un ADB hacia adelante.
Chris Stratton
No quise decir que el modo de depuración USB proporciona una conexión de red. Pero, desafortunadamente, esa era la única forma de ejecutar algunos comandos internos provenientes de un proyecto de aplicación de Android al servidor web integrado en Android Studio. Gracias por su preocupación, puede resultar confuso para los desarrolladores nuevos. Editado como la aplicación en progreso de desarrollo en Android Studio.
cagcak
Todavía no hay una respuesta aquí que proporcione un método para lograr la conectividad en esta dirección. El "modo depurable por USB" no hace eso, así que sin una descripción precisa de cómo lo hizo, no hay solución aquí .
Chris Stratton
4

¡Hice esto en una computadora con Windows y funcionó perfectamente!

Activa el anclaje a red USB en tu móvil. Escriba ipconfig en el símbolo del sistema de su computadora y busque ipv4 para "conexión de área local del adaptador ethernet x" (principalmente la primera). Ahora vaya a su navegador móvil, escriba ese ipv4 con el número de puerto de su aplicación web. por ejemplo: - 192.168.40.142:1342

¡Funcionó con esos sencillos pasos!

Binu Jasim
fuente
4

Cómo acceder fácilmente a LocalHost en un dispositivo Android real -> Conecte su PC con el dispositivo Android a través de USB

  1. Vaya a la inspección de Chrome, haga clic en 'f12' o Control + Shift + C

Herramienta de inspección de cromo

  1. Verifique la parte inferior de la herramienta de inspección de cromo.

  2. Ahora vaya a la configuración en la pestaña Dispositivo remoto.

Ficha Dispositivos remotos

  1. marque la opción "Descubrir dispositivo USB" y marque la opción "Reenvío de puertos".

  2. Ahora haga clic en Agregar reglas, ingrese cualquier puerto de dispositivo, por ejemplo (4880) y en Dirección local ingrese la dirección real del host local en mi caso, por ejemplo (127.0.0.1:480)

  3. Después de agregar la regla, vaya a su estudio de Android -> dentro de la URL de su código ( http://127.0.0.1:4880 ). Recuerde cambiar el puerto de 480 -> 4880.

  4. Vaya a la pestaña Dispositivo remoto en Chrome y haga clic en su Dispositivo conectado. Agregar nueva URL (127.0.0.1:4880) Inspeccionar el navegador Chrome del dispositivo Android

Verifique el navegador Chrome de su dispositivo real y comience a depurar el código en el dispositivo Android real.

kader hussain
fuente
1

Verifique las opciones de tipo de conexión USB. Debería tener uno llamado "Internet pass through". Eso permitirá que su teléfono use la misma conexión que su PC.

codemonkey
fuente
Esa es la única forma que conozco de usar la conexión de la PC a través de USB. Entonces, para su dispositivo, supongo que la respuesta es no. El simulador funciona porque comparte la conexión de su PC.
codemonkey
Sé que los nuevos dispositivos HTC con Sense 3 tienen la opción (Ex the Sensation)
codemonkey
Muchas gracias por la ayuda . Todavía hay que comprobar si alguna de las opciones funciona.
saurabh
1

Me gustó mucho la respuesta de John, pero me gustaría darle algunos cambios a aquellos que quieran probar alguna configuración de cliente // servidor ejecutando un cliente TCP en el dispositivo móvil conectado por USB y un servidor en la PC local.

Primero, es bastante obvio que el 10.0.2.2 no funcionará porque este es un dispositivo móvil de hardware REAL y no un simulador.

Así que sigue las instrucciones de John:

  • Desenchufe todos los cables de red de la PC y apague el wifi.
  • Apague el wifi en el dispositivo Android
  • Conecte el dispositivo Android a la PC a través de USB
  • Encienda el "Tethering USB" (Módem USB / Módem celular USB / USB שימוש כמודם סלולרי) en el menú de Android. (En redes-> más ...-> Tethering y hotspot portátil ")

    • Esta conexión USB actuará como un servidor DHCP para su conexión de una sola PC, por lo que le asignará a su PC una IP dedicada (dinámica) en su red USB local. Ahora todo lo que tiene que hacer es decirle a la aplicación cliente esta IP y puerto.
  • Obtenga la IP de su PC (que ha sido asignada por el cable de conexión USB) (abra el símbolo del sistema y escriba "ipconfig", luego busque la IP que el adaptador de red USB ha asignado, en Linux su ifconfig "Información de conexión" o en Ubuntu, etc. ..)

  • Dile a la aplicación que se conecte a esa IP (es decir, 192.168.42.87) con algo como (Java - lado del cliente):

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

    Disfrutar..

JamesC
fuente
1

Hola, puedes acceder a tu xampp localhost por

  1. Panel de control ->
  2. firewall de windows defender ->
  3. Configuración avanzada (en el lado izquierdo) -> Reglas de entrada -> Nueva regla -> Puerto -> en el puerto local específico escriba sus puertos Apache -> siguiente -> luego puede acceder a su host local usando una PC local Dirección IP:
user3285339
fuente
0

Conectando un teléfono Android a través de un cable USB y accediendo al servidor http en la computadora.

  1. Firewall: apáguelo, una vez que todo funcione, puede agregar una regla en las reglas de entrada, habilitar el servidor HTTP Apache (UDP y TCP) (o cualquier servidor HTTP que esté usando) Advertencia: si apaga el firewall, su computadora se vuelve vulnerable a los ataques de Internet. Entonces, apague Internet y desconéctese de la red primero. No necesita estar en Internet para que esto funcione, ya que está conectando dos dispositivos en la red local.

  2. Conecta el cable USB. Si aparece la ventana de red, seleccione Red doméstica. Si no aparece, probablemente esté configurado en Público (que no funcionará), así que vaya a: Panel de control \ Red e Internet \ Centro de redes y recursos compartidos (en win7) y configúrelo en Red doméstica allí. Es posible que le muestre una pantalla siguiente después de presionarla para compartir imágenes, música ... simplemente haga clic en cancelar. En la pantalla principal, la red doméstica seguirá activa.

  3. Necesita que la IP de la computadora, localhost u otros alias no funcionen. Para obtener la IP de su máquina, inicie la línea de comandos de Windows (presione la tecla de Windows + R y escriba cmd), la ventana negra del símbolo del sistema debería aparecer, escriba: "ipconfig" y presione enter. Ahora busca

Dirección IPv4. . . . . . . . . . . : 192.168. ###. ### Esa es la IP que su teléfono asignó a su computadora

  1. Ahora debería haber terminado, en el navegador del teléfono, intente acceder a un archivo html de prueba desde el servidor de su computadora; debería mostrarse bien.

  2. Ahora que todo está funcionando, probablemente querrá habilitar el firewall y el acceso a Internet en su computadora. Ahora intente acceder a su servidor http nuevamente. Probablemente no funcione. Dependiendo de su configuración, es posible que aparezca una ventana emergente pidiéndole que agregue una regla para permitirlo, pero si no lo hace, simplemente agréguelo usted mismo. Inicie el firewall de Windows y vaya a Reglas de entrada (porque es un servidor) y agregue Nueva regla. Seleccione "Programa". Busque el exe de su servidor http y, en la siguiente pantalla, asegúrese de que la opción Permitir esté seleccionada. Intente conectarse de nuevo, y ahora debería funcionar. Si no es así, probablemente se deba a que seleccionó un archivo exe incorrecto. Incluso puede ir más avanzado para restringir el uso externo (porque ahora todos en Internet pueden acceder si tienen su dirección IP de Internet) Para restringir el acceso, puede hacer clic con el botón derecho en la nueva regla que acaba de crear,

    Nota para los desarrolladores de Android, ahora en su código de Android, debe utilizar "http: //", de lo contrario no funcionará. Por ejemplo: MyAsyncTask.execute ("http://192.168.123.123/test.html")

Parte II: Configuración de IP fija / estática.

Ahora que todo funciona, cada vez que desenchufa el cable y lo vuelve a enchufar, su IP cambiará. Y si lo está usando en algún lugar como dentro de un código, ¡tendrá que actualizarlo cada vez! La solución que se me ocurrió es configurar la IP como estática.

  1. Con el teléfono conectado y anclado, regrese al Centro de redes y recursos compartidos y haga clic en la conexión de área local "Conexiones:"

captura de pantalla

  1. En la siguiente pantalla, seleccione Propiedades, luego resalte IP 4 y presione propiedades allí y haga clic en "Usar la siguiente dirección IP"
  2. Coloque la puerta de enlace predeterminada y la máscara de subred exactamente como estaban en ipconfig, y para la dirección IP, solo cambie los últimos 3 dígitos a cualquier valor entre 1 y 255

captura de pantalla

Esa IP será su nueva IP fija / estática y seguirá siendo la misma la próxima vez que conecte el teléfono.

Emil
fuente
0
  1. Asegúrese de tener adb instalado en la computadora , la depuración USB habilitada en el teléfono y que el teléfono haya permitido el acceso a la computadora. Conecte el teléfono a la computadora mediante un cable USB y asegúrese de que esté visible (debería aparecer en el comando Bash) adb devices.
  2. En el navegador Chrome de su computadora, abra chrome: // inspeccionar / # dispositivos , haga clic en el botón "Reenvío de puertos", marque "Habilitar reenvío de puertos" y agregue el puerto en la computadora que desea que sea accesible desde el teléfono ( instrucciones detalladas aquí ). Deberá mantener abierta la pestaña que ejecuta chrome: // inspeccionar / # dispositivos.
  3. En el navegador de su teléfono, navegue hasta localhost: [número_puerto], y debería mostrar lo que se esté ejecutando en la computadora.

Esto funciona en Windows y Ubuntu Linux, y debería funcionar también en Mac.

Josh
fuente