java - Android 套接字到 Java ServerSocket 连接

标签 java android sockets serversocket

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

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

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

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

最佳答案

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

How to connect android emulator to the internet

该帖子的最佳答案是

I think some of the answers may have addressed this, however obliquely, but here's what worked for me.

Assuming your problem is occurring when you're on a wireless network and you have a LAN card installed, the issue is that the emulator tries to obtain its DNS settings from that LAN card. Not a problem when you're connected via that LAN, but utterly useless if you're on a wireless connection. I noticed this when I was on my laptop.

So, how to fix? Simple: Disable your LAN card. Really. Just go to your Network connections, find your LAN card, right click it and choose disable. Now try your emulator. If you're like me, it suddenly ... works! - artifex

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

Actually, the emulator takes the adapter with the highest priority, so switching the priority of your adapters (wireless as highest) should work too and it won't require you to disable the LAN-adapter completely. Thanks for your answer though, saved me a headache – Anzeo Apr 6 '11 at 14:47

就您而言,Java 程序位于同一台计算机上。所以我认为,Java 程序 Socket 可能绑定(bind)到其中一个网络接口(interface)的 IP,而 Android 正在尝试连接到另一个网络接口(interface)。可以肯定的是,只需禁用除一个网络接口(interface)之外的所有网络接口(interface)并运行您的程序即可。您可以调整网络接口(interface)的优先级。

关于java - Android 套接字到 Java ServerSocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12160626/

相关文章:

android - Android : INVALID_SCOPE 无法使用 Google+ 登录获取授权码

c++ - 使用 boost::asio::ip::tcp::socket::cancel() 和 socket::close()

java - 需要一些关于处理 Java 中许多字段的建议

android - 更改 PopupMenu 中单个项目的文本颜色

c# - 如何将这 4 个 SQL 表转换为 OO 类(Java 或 C#),但不使用 NHibernate/LINQ?

android - OkHttp MockWebServer 使用 Retrofit 动态 URL

在 C 中将字节转换为 uint32

multithreading - 有没有办法检查连接是否已关闭然后完成线程?

java - 如何强制 javax xslt 转换器使用 utf-8 而不是 html 实体对国家字符进行编码?

java - 从另一个 JVM 加载 JVM 中现有的类对象