我想从Android模拟器访问局域网上其中一台机器提供的Web服务。
如果服务在运行模拟器的同一台机器上运行(称为主机),我可以添加网络重定向并使用正确的端口访问10.0.2.2(模拟器中的主机环回接口)。
然而,它正在LAN上的另一台机器上运行。我想我可以在主机上添加另一个重定向,除了上面的那个(虽然......必须与iptables对抗),但是存在一个更简单的解决方案吗?
答案 0 :(得分:5)
嗯,它只是有效(TM)。
在我测试之前阅读过的android模拟器手册中(我在做之前尝试使用RTFM),这说明了:
模拟器的每个实例都在虚拟路由器/防火墙服务后面运行,该服务将其与开发机器的网络接口和设置以及互联网隔离开来。仿真设备无法在网络上看到您的开发计算机或其他仿真器实例。相反,它只看到它通过以太网连接到路由器/防火墙。
这让我觉得它无法访问我的局域网。我错了,只需在我的局域网上添加服务器的IP,我就可以从模拟器中访问它了。
答案 1 :(得分:4)
我们知道,仿真器可以通过IP 10.0.2.2访问主机,所以我尝试了IP转发,但我无法使其工作..:|
我按照以下链接将localhost(模拟器情况下为10.0.2.2)的转发请求发送到局域网中的其他计算机。
http://www.debuntu.org/how-to-redirecting-network-traffic-a-new-ip-using-iptables
答案 2 :(得分:1)
自 2018-08 起,似乎已经撤消了“ It just works(TM)”证书
这是我访问本地网络中服务器所需要的:
host ip (my pc): 192.168.15.102/24
server ip: 192.168.200.33/24
使用netsh
netsh interface portproxy add v4tov4 listenport=80 connectport=80 connectaddress=192.168.200.33
启动移动设备模拟器并浏览到 10.0.2.2 (如documentation中所述):
10.0.2.2 主机回送接口的特殊别名(即开发计算机上的127.0.0.1)
答案 3 :(得分:0)
你可以得到一个真正的Android设备并将其连接到局域网(我已经这样做了)。
您是如何连接主机的?通过HTML?因为如果您的应用需要与机器进行硬线连接,那么对于移动设备来说,这不是一个非常好的解决方案。