2012-08-28 138 views
0

我很难将模拟的Android活动连接到运行在我的计算机上的常规Java程序。下面是一些我把那个应该有固定他们的注意事项...Android套接字到Java ServerSocket连接

  • 我尝试连接到10.0.2.2,该仿真器是
  • 本地主机的ip地址我产生新线程独立从UI线程进行连接。 (我没有做一个奇特的工作线程,我只是创造了一个新的线程和说。开始())

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

你知道我应该知道的其他事吗?主要问题是没有任何反应。我在本地主机Java程序中的.accept方法调用之后放了一个断点,我永远不会达到它。

+1

这不是一个真正的代码问题,但更多的是模拟器使用计算机网络的方式。仿真器位于内部虚假网络上,无法到达您的计算机。您将不会遇到实际硬件设备的问题。 – Nick

+0

感谢尼克,这似乎是问题所在。我以为我读了一些你可以和当地主持人沟通的地方,但我想不是。这将使调试稍微困难... – Matthew

回答

1

请参阅此线程将仿真器网络连接到计算机的网络。希望这有助于

How to connect android emulator to the internet

从岗位最多的回答是

我觉得有些问题的答案可能有这种斜但是解决,但在这里是为我工作。

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

那么,如何解决?简单:禁用您的LAN卡。真。只需进入您的网络连接,找到您的LAN卡,右键单击它并选择禁用。现在尝试你的模拟器。如果你像我一样,它突然......起作用了! - artifex

我觉得这个评论有用。

其实,模拟器采用具有最高优先级的适配器,让你切换适配器的优先级(无线为最高)应该工作过,也不会要求你完全禁用LAN适配器。谢谢你的回答,虽然,救了我头痛 - Anzeo 11年4月6日在14:47

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

+0

如果您提供的链接发生变化,请在您的回答中添加更多详细信息。在这种情况下,你的答案不会有帮助。 – dckuehn

+1

感谢@Dckuehm的建议,我编辑了答案。 –