为什么我们使用10.0.2.2连接到本地Web服务器而不是在Android客户端使用计算机IP地址

Tou*_*one 43 android client-server

我们通常在url中使用10.0.2.2 :(端口号)连接到本地Web服务器,但是我们应该使用计算机的ip地址而不是10.0.2.2

那为什么我们使用10.0.2.2?

Zep*_*hyr 41

网络地址空间

模拟器的每个实例都在虚拟路由器/防火墙服务后面运行,该服务将其与开发机器的网络接口和设置以及互联网隔离开来.仿真设备无法在网络上看到您的开发计算机或其他仿真器实例.相反,它只看到它通过以太网连接到路由器/防火墙.

每个实例的虚拟路由器管理10.0.2/24网络地址空间-由路由器管理的所有地址都在的形式10.0.2.<xx>,其中<xx>是一个数字.此空间中的地址由仿真器/路由器预先分配,如下所示:

网络地址描述

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
Run Code Online (Sandbox Code Playgroud)

  • @robert,答案来自https://developer.android.com/studio/run/emulator-networking.html. (2认同)

vla*_*d_o 25

如果您在计算机127.0.0.1 :( port)中运行服务器和模拟器将引用模拟器本身而不是服务器.10.0.2.2是该问题的解决方案:)

希望有所帮助


And*_*ght 20

您使用10.0.2.2的原因是因为它是主机环回接口(又名127.0.0.1)的特殊别名.这就是它工作的原因,它不是很酷吗?


aze*_*iti 9

如果使用10.0.2.2进行连接,它将始终指向您的localhost.在阅读本文之前,我使用了真正的IP机器,它可以两种方式工作.

使用10.0.2.2的优点是您不关心什么是真正的IP,您可以在另一台计算机上更轻松地移动项目.

  • 嗨,感谢这是一个旧答案,但我尝试使用通过 USB 连接的物理设备进行相同的操作,但使用 10.0.2.2 不起作用。你知道如何用物理设备做同样的事情吗? (2认同)