3

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

我用路由器创建了专用网络,所以连接到网络的只有我的电脑和我的手机,以避免防火墙/关闭端口问题。

我的 PC ip 是 192.168.1.100 并且我正在尝试相互 ping 以便我可以访问每个网络节点的海上可达性。Ping 从我的电脑(不是模拟器控制台)到手机可以正常工作。

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

但我猜那些是用来连接两个模拟器的,对吧?

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

有什么线索吗?谢谢!!

4

3 回答 3

4

我尝试了我给你的早期解决方案,但没有奏效。正如您所说,可能原因是模拟器控制台的 redir 命令仅重定向来自本地主机的数据包。

于是我就找了一个简单的代理服务器,在同一台机器上使用来测试一下。

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 模拟器:2000 -> 应用程序

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

于 2010-12-15T22:07:58.987 回答
0

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

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

我希望任何来这里的人都反对我。

于 2010-10-22T12:19:42.473 回答
0

您可能能够将真实设备与模拟器实例连接起来。

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

例如:

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

重新添加 tcp:4000:2000

最后,在真机上打开一个socket到你的机器地址(192.168.1.100)的4000端口。

于 2010-11-30T23:07:57.340 回答