87 votes

Pourquoi utilise-t-on 10.0.2.2 pour se connecter au serveur web local au lieu d'utiliser l'adresse IP de l'ordinateur dans le client Android ?

Nous utilisons normalement 10.0.2.2 :(numéro de port) dans l'url pour nous connecter au serveur web local, mais nous devrions utiliser l'adresse IP de l'ordinateur au lieu de 10.0.2.2.

Alors pourquoi utiliser 10.0.2.2 ?

0 votes

Peut-être que 10.0.0.2 EST l'adresse IP de l'ordinateur ?

0 votes

@Blackbelt le lien est cassé, merci de le mettre à jour.

0 votes

@minBill 10.0.0.2 n'est pas l'adresse IP de l'ordinateur, c'est un alias spécial vers l'interface loopback de votre hôte (c'est-à-dire 127.0.0.1 sur votre machine de développement).

101voto

Zephyr Points 374

Espace d'adressage du réseau

Chaque instance de l'émulateur fonctionne derrière un service de routeur/pare-feu virtuel qui l'isole des interfaces et paramètres réseau de votre machine de développement et de l'internet. Un appareil émulé ne peut pas voir votre machine de développement ou d'autres instances d'émulateur sur le réseau. Il voit seulement qu'il est connecté par Ethernet à un routeur/pare-feu.

Le routeur virtuel de chaque instance gère l'espace d'adressage du réseau 10.0.2/24 - toutes les adresses gérées par le routeur sont sous la forme de 10.0.2.<xx> donde <xx> est un nombre. Les adresses de cet espace sont pré-allouées par l'émulateur/routeur comme suit :

Adresse réseau Description

10.0.2.1    Router/gateway address
10.0.2.2    Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine)
10.0.2.3    First DNS server
10.0.2.4 / 10.0.2.5 / 10.0.2.6  Optional second, third and fourth DNS server (if any)
10.0.2.15   The emulated device's own network/ethernet interface
127.0.0.1   The emulated device's own loopback interface

39voto

vlad_o Points 148

Si vous utilisez à la fois le serveur et l'émulateur sur votre ordinateur, 127.0.0.1 : (port) fera référence à l'émulateur lui-même et non au serveur. 10.0.2.2 est la solution à ce problème :)

J'espère que cela vous a aidé

26voto

Andrew Allbright Points 3383

La raison pour laquelle vous utilisez 10.0.2.2 est qu'il s'agit de l'alias spécial de l'interface loopback de votre hôte (aka 127.0.0.1). C'est la raison pour laquelle cela fonctionne, et n'est-ce pas génial ?

14voto

azertiti Points 2119

Si vous utilisez 10.0.2.2 pour la connexion, elle pointera toujours vers votre hôte local. J'ai utilisé l'IP réelle de ma machine avant de lire ceci et cela fonctionne dans les deux sens.

L'avantage d'utiliser 10.0.2.2 est que vous ne vous souciez pas de l'IP réelle et que vous pouvez déplacer le projet plus facilement sur un autre ordinateur.

0 votes

Un autre avantage de l'utilisation de la version 10.0.2.2 est qu'elle fonctionne également si votre machine n'est pas connectée à l'internet.

2 votes

Bonjour, j'apprécie que cette réponse soit ancienne mais j'essaie la même chose avec un appareil physique connecté via USB, mais l'utilisation de 10.0.2.2 ne fonctionne pas. Vous savez comment faire la même chose avec un appareil physique ?

0 votes

Bonjour, je ne pense pas que ce soit le cas. L'émulateur fonctionne sur votre ordinateur alors qu'un appareil physique est complètement indépendant (hôte différent). Je ne connais pas de solution qui n'implique pas de se connecter directement à l'adresse IP de votre ordinateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X