0

我很难将模拟的 Android Activity 连接到在我的计算机上运行的常规 Java 程序。以下是我采取的一些预防措施,应该可以解决它们...

  • 我尝试连接到 10.0.2.2,即模拟器所在本地主机的 IP 地址
  • 我生成了一个与 UI 线程分开的新线程来建立连接。(我没有做一个花哨的工作线程,我只是创建了一个新线程并说.start())

所以基本上你的系统是由一个普通的Java程序组成的,它声明一个ServerSocket,然后等待.accept()方法。我启动了那个程序,希望它坐在那里等待。然后我切换到我的 Activity 类,它有一个按钮的 onClick 方法。该方法调用我的新线程的 .start() 方法。在我的活动的 .run 方法中,我声明了一个新的 Socket 并尝试连接到本地主机。

你知道我还应该注意什么吗?主要问题是什么都没有发生。我在本地主机 java 程序中的 .accept 方法调用之后放置了一个断点,但我从未到达它。

4

1 回答 1

1

请参阅此线程以将模拟器网络连接到计算机的网络。希望这可以帮助

如何将安卓模拟器连接到互联网

该帖子的最佳答案是

我认为一些答案可能已经解决了这个问题,但这是对我有用的。

假设当您在无线网络上并且安装了 LAN 卡时出现问题,则问题是模拟器尝试从该 LAN 卡获取其 DNS 设置。当您通过该 LAN 连接时,这不是问题,但如果您使用无线连接,则完全没用。当我在笔记本电脑上时,我注意到了这一点。

那么,如何修复呢?简单:禁用您的 LAN 卡。真的。只需转到您的网络连接,找到您的 LAN 卡,右键单击它并选择禁用。现在试试你的模拟器。如果你像我一样,它突然......工作!- 神器

我发现这个对答案的评论很有用。

实际上,模拟器采用具有最高优先级的适配器,因此切换适配器的优先级(无线为最高)也应该可以工作,并且不需要您完全禁用 LAN 适配器。谢谢你的回答,让我头疼 – Anzeo 2011-04-06 14:47:07

在您的情况下,Java 程序在同一台机器上。所以我认为,Java 程序 Socket 可能正在绑定到其中一个网络接口的 IP,而 Android 正在尝试连接到另一个。可以肯定的是,只需禁用除一个以外的所有网络接口并运行您的程序。发布您可以调整网络接口的优先级。

于 2016-08-31T16:29:15.517 回答