1 votes

Connecter l'appareil Android au serveur dans l'émulateur

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é.

2voto

Chris Roberts Points 7543

Le problème ici est que la redirection ADB s'attache à l'interface de bouclage locale (127.0.0.1), et que vous n'avez pas de redirection de l'interface LAN (192.168.43.198) vers l'interface de bouclage. La méthode que vous pouvez utiliser pour y parvenir dépend de votre plate-forme. Je ne sais pas ce que vous pouvez utiliser sous Windows, mais sous Linux vous pouvez utiliser rinetd et sous OSX, vous pouvez utiliser ipfw

LINUX :

Ajoutez les lignes suivantes à votre /etc/rinetd.conf :

# bindaddress    bindport  connectaddress  connectport
192.168.43.198   40000     127.0.0.1       40000

Puis redémarrer rinetd con service rinetd restart o /etc/init.d/rinetd restart .

OSX :

ipfw add fwd 127.0.0.1,40000 tcp from any to 192.168.43.198 dst-port 40000

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X