繁体   English   中英

Android套接字到Java Server的套接字连接

[英]Android socket to Java ServerSocket Connection

我在将模拟的Android Activity连接到计算机上运行的常规Java程序时遇到困难。 这是我应采取的一些预防措施,应该可以解决这些问题。

  • 我尝试连接到10.0.2.2,即模拟器所在的localhost的ipaddress
  • 我产生了一个与UI线程分开的新线程来进行连接。 (我没有做过花哨的工作线程,我只是创建了一个新线程并说.start())

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

你知道我应该知道的其他事情吗? 主要问题是什么也没发生。 我在本地主机Java程序中的.accept方法调用之后放置了一个断点,但从未到达。

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

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

该帖子的最高答案是

我认为某些答案可能已经解决了这个问题,无论它是多么倾斜,但这都是对我有用的。

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

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

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

实际上,仿真器将适配器的优先级设置为最高,因此切换适配器的优先级(将无线设置为最高)也应该起作用,并且不需要完全禁用LAN适配器。 不过感谢您的回答,让我头疼– Anzeo 2011年4月6日在14:47

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM