我在windows上使用android仿真器。android开发人员doc说,模拟器的每个实例都运行在虚拟路由器/防火墙服务的后面。每个实例的虚拟路由器管理10.0.2/24网络地址空间。但是,当我用adb shell连接到模拟器并执行ifconfig时,我得到了以下输出:
radio0链接附件:UNSPEC附件:192.168.200.2 Bcast:192.168.200.255面具:255.255.255.0 wlan0链接附件:UNSPEC外接件:192.168.232.2 Bcast:192.168.239.255面具:255.255.248.0
ip route show提供了以下输出
192.168.200.0/24 dev radio0 proto内核范围链接src 192.168.200.2 192.168.232.0/21 dev wlan0 proto内核范围链接src 192.168.232.2
我没有看到10.2.x.xIP地址中的任何一个。那些ip地址在哪里?
另外,虚拟路由器是在模拟器内运行(在Android操作系统上)还是在windows上运行?如何检查虚拟路由器?
发布于 2018-02-11 19:12:15
我在Windows上运行Android7.1.1 (API 25)也有同样的问题。但是当我模拟Android7.0 (API 24)时,它就像预期的那样工作。设备获得IP 10.0.2.15。在本例中,ip route show将带来10.2.x.x地址。因此,如果您可以只使用以前的版本(API16-API 24)。
此路由器存在于模拟器中,而Windows不知道它。如果需要从Windows访问运行在模拟器中的服务,则需要添加端口映射:
telnet localhost 5554
auth <token from 'C:\Users\{user}\.emulator_console_auth_token'>
redir add tcp:8080:8080然后您可以通过: 127.0.0.1:8080访问您的服务。但是,这种方法不适用于Android7.1.1。我不知道这是怎么回事。
发布于 2018-07-16 15:56:12
从API 25开始,仿真器的网络似乎发生了变化。设备IP不再是10.0.2.15,并且通过telnet发出“redir”命令(如文档所述)不再工作。
为了有一个重定向,使用亚行程序。首先,确保亚行在你的研究之路上。通常情况下,它是在Android / SDK /platform-工具下,无论Android位于何处,也不管您使用的是什么操作系统。
然后,使用以下命令行:
adb forward tcp:<host port> tcp:<guest port>(例如:adb forward tcp:8080 tcp:8080)。现在,您可以使用:telnet localhost <host port>访问端口,该端口将被重定向到来宾。
这是非常不幸的,因为(截至28版)并没有以这种方式记录下来。我想,在某个时候,文档将被修复。
发布于 2021-01-31 22:51:21
实际上这要看情况。我在“Android11API30模拟器”和"Android 9API28模拟器“上连接并测试了我的SFTP服务器应用程序。
在“Android11API30模拟器”上,我的Server应用程序出现在IP 10.0.2.16和端口6789上,我可以使用redir add tcp:<localhost-port>:6789连接到它(更详细的信息请参见通过模拟器控制台设置重定向)。但是我也可以用adb -s <emulator-id> forward tcp:<localhost-port> tcp:6789连接到它。
在"Android 9 API28模拟器“上,我的Server应用程序出现在IP 192.168.232.2和端口6789上,我只能使用adb -s <emulator-id> forward tcp:<localhost-port> tcp:6789连接到它。我无法使用redir add tcp:<localhost-port>:6789连接到它。
结论“亚行前进”总是有效的,因此应该使用。(不要使用仅在地址范围10.0.2.0/24中工作的"redir add tcp“)。
https://stackoverflow.com/questions/48522531
复制相似问题