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

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


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 address10.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 server10.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 interface127.0.0.1   The emulated device's own loopback interface


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


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?