Antecedentes
He estado buscando en AE, SO y Google durante muchas horas y he encontrado muchos ejemplos de personas que quieren conectar su PC al emulador. También me he encontrado con algunos que desean conectar su dispositivo a su servidor en un PC. Quiero conectar mi dispositivo, a un emulador que se encuentra en funcionamiento en un PC. He probado los ejemplos dados en la documentación pero todavía no he logrado que funcione.
Me gustaría que mi dispositivo (un dispositivo real, Nexus 7) creara un punto de acceso al cual mi PC esté conectado. En el PC, hay un emulador en funcionamiento que tiene un socket abierto en el puerto 40000. Estoy recibiendo errores de ECONNREFUSED al intentar conectar mi dispositivo al emulador. Esto es lo que estoy haciendo:
Conexión del dispositivo al emulador (a través del PC)
El dispositivo intenta crear una conexión de Socket con el emulador a través del PC. La IP de mi PC es 192.168.43.198, por lo que es la IP de destino que el dispositivo utiliza. Sin embargo, la conexión falla con un mensaje de ECONNREFUSED.
Reenvío usando ADB y telnet
En el PC he intentado reenviar el puerto 40000 al emulador usando:
adb forward tcp:40000 tcp:40000
y
redir add tcp:40000:40000
sobre telnet hacia el emulador.
Cuando ejecuto el comando adb forward, obtengo un puerto de escucha en el PC de la siguiente manera:
TCP 127.0.0.1:40000 0.0.0.0:0 LISTENING
.
Observa que la IP de escucha es 127.0.0.1.
Cuando ejecuto el comando redir
, no puedo ver ningún puerto de escucha usando netstat.
Prueba de conexión desde el dispositivo al PC
Para probar las "partes" de la conexión, he utilizado SocketTest
(http://sourceforge.net/projects/sockettest/) en mi PC.
Si lo utilizo como servidor, escuchando en el puerto 40000. Entonces mi dispositivo se conecta a él sin problemas usando 192.168.43.198:40000.
Prueba de conexión desde el PC al emulador
Cuando uso SocketTest como cliente para conectarme a 127.0.0.1:40000, también se conecta correctamente al emulador.
Sin embargo, al utilizar la IP externa: 192.168.43.198, ¡SocketTest también recibe una conexión rechazada!
Posibles problemas
Me parece que mi PC no se da cuenta de que debería enrutar 192.168.43.198:40000 a 127.0.0.1:40000 a pesar de que los comandos que he ingresado afirman hacerlo en la documentación (http://developer.android.com/tools/devices/emulator.html#redirection y http://developer.android.com/tools/help/adb.html#forwardports)
El firewall está apagado.