将Real设备连接到Android模拟器

时间:2010-10-21 18:14:29

标签: android-emulator ping

我正在为Android开发一个网络应用程序,我仍然坚持将我的真实Android设备与在我的台式计算机上运行的设备模拟器连接。

我已经使用路由器创建了专用网络,因此连接到网络的唯一网络是我的电脑和手机,以避免出现防火墙/关闭端口问题。

我的电脑IP是192.168.1.100,我正在尝试相互ping通,因此我可以实现每个网络节点的海上可达性。从我的PC(不是模拟器控制台)到手机,Ping工作正常。

问题是我想从我的手机ping PC模拟器,而不是PC本身...为此,我使用模拟器控制台...我应该使用我的计算机IP还是应该使用另一个?我在这里看到了一些像“10.0.x.x”这样的ip http://developer.android.com/guide/developing/tools/emulator.html

但我猜这些是用于连接两个EMULATORS,对吗?

此外,我尝试通过套接字连接它们,通过仿真器控制台为端口创建重定向,但仍无法连接它们。

任何线索? 谢谢!

3 个答案:

答案 0 :(得分:3)

我尝试了我给你的早期解决方案但它没有用。正如你所说,可能原因是模拟器控制台的redir命令只重定向来自localhost的数据包。

所以我搜索了一个简单的代理服务器,并在同一台机器上使用它来测试它。

http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm

有了这个,我使用了以下配置:

代理:

String host = "localhost";
int remoteport = 3000;
int localport = 4000;

然后运行模拟器实例:

  • 侦听端口2000的服务器套接字。
  • 打开telnet实例并发出“redir add tcp:3000:2000”

最后在真实设备上打开一个套接字到端口4000上的机器地址。

所以网络地图如下:

设备< - >机器:4000代理机器:3000< - > :3000 Emulator:2000 - >应用

这对我在设备和模拟器上使用相同的应用程序起作用。

答案 1 :(得分:0)

我得出结论,模拟器只能接收来自环回(127.0.0.1)的数据包,因为当您发出“redir add tcp:port:newPort时,它只重定向第一个端口(与环回相关联)到第二个端口(与“模拟器虚拟IP”相关联)。

我试图创建一个桥接器,它将所有进入我电脑的数据包重定向到IP 127.0.0.1,但仍无法正常工作。因此,我认为模拟器的开发只是为了与其他模拟器进行通信......

我希望有人来到这里与我相矛盾。

答案 2 :(得分:0)

您可以将真实设备与仿真器实例连接。

您是否尝试在模拟设备上设置重定向,然后通过Java套接字连接真实设备?

例如:

在模拟设备上打开侦听端口2000的服务器套接字,然后打开telnet连接并发出命令:

redir add tcp:4000:2000

最后,将真实设备上的套接字打开到端口4000上的机器地址(192.168.1.100)。