2010-03-26 16 views
12

Mi actividad necesita comunicarse con un servidor Java ubicado en mi máquina de desarrollo. En realidad, usando el emulador, puedo acceder al socket del servidor a través de la dirección especial 10.0.2.2. Ahora me gustaría probar mi aplicación en mi teléfono conectado a través del usb, pero parece que ya no puedo usar 10.0.2.2 para acceder a mi máquina de desarrollo localhost. Naturalmente, el uso de un enrutador wifi y un direccionamiento de LAN adecuado hace el truco, pero en su lugar tengo que usar conexión USB. ¿Alguna pista?Máquina de desarrollo de acceso localhost a través de usb

de edición:
diferentes escenarios se agregó a dejar que todos a entender mejor:

1. basadas en emulador escenario:

  • servidor Java estándar que se ejecuta en mi pc @localhost: 15000
  • android java client ejecutándose en mi emulador.

Cuando la aplicación de Android necesita ponerse en contacto con el servidor utiliza 10.0.2.2:15000 como se especifica here. Todo funciona bien.

2. wifi escenario adecuado con dispositivo conectado física:

  • servidor Java estándar que se ejecuta en mi pc @ 192.168.1.10: 15000.
  • android java client ejecutándose en mi dispositivo con la dirección 192.168.1.11 asignada.

Cuando la aplicación de Android necesita ponerse en contacto con el servidor utiliza 192.168.1.10:15000 y todo funciona bien también.

3. escenario deseado:

  • servidor Java estándar que se ejecuta en mi pc @localhost: 15000.
  • android java cliente ejecutándose en mi dispositivo conectado mediante un cable usb. Ninguna red está activa.

Cuando la aplicación de Android necesita ponerse en contacto con el servidor, intenta conectarse a 10.0.2.2:15000 pero en su lugar se produce una excepción (Red inalcanzable). Parece que la dirección especial 10.0.2.2 funciona solo para instancias de emulador.

Me pregunto si en la suite adb/adt hay una forma de acceder a la dirección de la PC desde el dispositivo conectado mediante un cable usb. Espero que sea un poco más claro ahora. Gracias.

Respuesta

3

Parece que no hay forma de dejar que el escenario # 3 funcione correctamente, porque la conexión USB no es una conexión de red real y el teléfono no tiene ninguna IP asociada.

En realidad, mi solución es utilizar una conexión wifi ad-hoc entre mi teléfono y mi pc. Este escenario es similar al # 2, pero sin enrutador o dhcp. Desafortunadamente, mi Hero no puede manejar conexiones ad-hoc de forma nativa debido a this issue. Así que tuve que rootear mi dispositivo y cambiar manualmente algunos script de configuración. Espero que funciones como esta puedan estar disponibles en próximos lanzamientos.

0

Puede configurar una conexión a su teléfono a través de USB desde su PC dev, pero tiene que adb forward. Sin embargo, no creo que pueda enrutar el otro lado por encima del usb: configurar una conexión desde el teléfono a la PC.

Puede hacer que su PC se conecte al teléfono y verifique qué IP tiene.

Mientras que pensar en ello, me di cuenta, usando adb forward usted tiene que utilizar localhost como su anfitrión, así que tal vez también se puede hacer esto en el teléfono: adb forward el puerto que desea utilizar y en el teléfono, conectarse a ese puerto en localhost.

+0

No uso ningún puerto que esté escuchando en mi dispositivo. El servidor está en mi máquina de desarrollo en su lugar. Por lo tanto, si IIRC, adb forward funciona de la manera opuesta (reenvío número de puertos de "escuchas") y este no es el caso. –

+0

Sí, eso es lo que dije, no estaba seguro de que funcionar desde tu dispositivo a tu PC. Lo siento. – MrSnowflake

+0

Esto puede funcionar con un túnel inverso al que el teléfono puede volver atrás. La mayoría de las instalaciones ssh soportarían eso nuestra de la caja. –

Cuestiones relacionadas