Contexte
J'ai cherché AE, SO et Google pendant de nombreuses heures et j'ai trouvé de nombreux exemples de personnes souhaitant connecter leur PC à l'émulateur. J'en ai également rencontré qui souhaitent connecter leur appareil à leur serveur sur un PC. Je veux connecter mon appareil à un émulateur fonctionnant sur un PC. J'ai essayé les exemples donnés dans la documentation mais je n'ai toujours pas réussi à le faire fonctionner.
Je voudrais que mon appareil (appareil réel, Nexus 7) crée un Hotspot auquel mon PC est connecté. Dans le PC, un émulateur est en cours d'exécution qui a un socket ouvert sur le port 40000. Je reçois des erreurs ECONNREFUSED lorsque j'essaie de connecter mon appareil à l'émulateur. Voici ce que je fais :
Connexion de l'appareil à l'émulateur (via le PC)
Le dispositif tente de créer une connexion Socket à l'émulateur via le PC. L'adresse IP de mon PC est 192.168.43.198, c'est donc ce que l'appareil utilise comme adresse IP de destination. La connexion échoue cependant, avec un message ECONNREFUSED.
Transfert en utilisant ADB et telnet
Sur le PC, j'ai essayé de transférer le port 40000 à l'émulateur en utilisant :
adb forward tcp:40000 tcp:40000
y
redir add tcp:40000:40000
par telnet à l'émulateur.
En exécutant la commande adb forward, j'obtiens un port d'écoute sur le PC comme tel :
TCP 127.0.0.1:40000 0.0.0.0:0 LISTENING
.
Remarquez que l'IP d'écoute est 127.0.0.1.
Lorsque vous exécutez le redir
je ne vois aucun port d'écoute en utilisant netstat.
Test de la connexion entre l'appareil et le PC
Pour tester les "parties" de la connexion, j'ai utilisé SocketTest
( http://sourceforge.net/projects/sockettest/ ) sur mon PC.
Si je l'utilise comme serveur, en écoutant sur le port 40000. Mon appareil s'y connecte alors très bien en utilisant 192.168.43.198:40000.
Test de la connexion entre le PC et l'émulateur
Lorsque l'on utilise SocketTest comme client pour se connecter à 127.0.0.1:40000, il se connecte également sans problème à l'émulateur.
Cependant, en utilisant l'IP externe : 192.168.43.198, SocketTest obtient également un refus de connexion !
Problèmes possibles
Il me semble que mon PC ne réalise pas qu'il devrait router 192.168.43.198:40000 vers 127.0.0.1:40000 bien que les commandes que j'ai saisies prétendent le faire dans la documentation ( http://developer.Android.com/tools/devices/emulator.html#redirection y http://developer.Android.com/tools/help/adb.html#forwardports )
Le pare-feu est désactivé.