why do we use 10.0.2.2 to connect to local web server instead of using computer ip address in android client
Asked Answered
A

4

89

We normally use 10.0.2.2:(port number) in the url to connect to the local web server,but we should use the computer's ip address instead of 10.0.2.2

Then why do we use 10.0.2.2?

Atomy answered 21/3, 2012 at 16:14 Comment(3)
Maybe 10.0.0.2 IS the computer ip address?Wenda
@Blackbelt the link is broken..please update itBrakpan
@minBill 10.0.0.2 is not the computer IP address, it is a Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine)Chicago
A
103

Network Address Space

Each instance of the emulator runs behind a virtual router/firewall service that isolates it from your development machine's network interfaces and settings and from the internet. An emulated device can not see your development machine or other emulator instances on the network. Instead, it sees only that it is connected through Ethernet to a router/firewall.

The virtual router for each instance manages the 10.0.2/24 network address space — all addresses managed by the router are in the form of 10.0.2.<xx>, where <xx> is a number. Addresses within this space are pre-allocated by the emulator/router as follows:

Network Address 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
Ammadas answered 11/1, 2016 at 22:25 Comment(2)
@robert , the answer is from developer.android.com/studio/run/emulator-networking.html.Ammadas
is virtual gateway's IP (10.0.2.1) invisible from the emulated device? I've tried adb shell ping 10.0.2.1 and it could not reach it.Appreciable
S
40

If you are running both server and emulator in you computer 127.0.0.1:(port) will refer to the emulator itself and not to the server.The 10.0.2.2 is the solution to that problem :)

Hope that helped

Story answered 21/3, 2012 at 16:33 Comment(0)
O
26

The reason why you use 10.0.2.2 is because it's the special alias to your host loopback interface (aka 127.0.0.1). That's why it works, and isn't it cool that it does?

Ouabain answered 5/11, 2013 at 20:44 Comment(0)
G
14

If you use 10.0.2.2 for connection it will always point to your localhost. I used the real IP for my machine before reading this and it works in both ways.

The advantage of using 10.0.2.2 is that you don't care what is the real IP and you can move the project easier on another computer.

Georginageorgine answered 21/3, 2012 at 16:29 Comment(3)
Another advantage of using 10.0.2.2 is that it also works if your machine is not connected to the internet.Mocha
Hi, appreciate that this is an old answer but im trying the same with a physical device connected via USB, but using 10.0.2.2 is not working. Would you know how to do the same with a physical device ?Spelldown
Hi, I don't think it will. Emulator is running on your computer while a physical device is completely independent (different host). I'm not aware of a solution which doesn't involve connecting directly to your computer's IP address.Georginageorgine

© 2022 - 2024 — McMap. All rights reserved.