从 Android 模拟器连接到 LocalHost/10.0.2.2 超时

新手上路,请多包涵

虽然这个问题在 StackOverflow 中被问过多次并且我经历了很多,但我仍然无法解决我的问题或者我无法找出问题的根本原因。因此,发布一个新问题。

以下是我浏览过的链接列表——

  1. 如何从 Eclipse 中的 Android 模拟器连接到我的 http://localhost Web 服务器

  2. 从 Android 模拟器访问 localhost:port

  3. 如何从我的 Android 设备访问我的本地主机?

  4. 如何在android模拟器中连接本地主机?

这是我的代码——

 protected Void doInBackground(Void... params)
    {
        try
        {
            HttpURLConnection connection = null;

            URL url = new URL("http://10.0.2.2:8080/android_connect/user_registration.php");
            connection = (HttpURLConnection)url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestMethod("POST");
            connection.setUseCaches(false);
            connection.setConnectTimeout(720000000);
            connection.setReadTimeout(72000000);
            connection.connect();

            OutputStreamWriter output = new OutputStreamWriter(connection.getOutputStream());
            output.write(emp_details.toString());
            output.flush();
            output.close();

            HttpResult = connection.getResponseCode();

            connection.disconnect();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }

我正在尝试通过 WAMP 服务器使用 PHP 将 Android 与 MySQL 数据库连接起来。 PHP 文件 (user_registration.php) 保存在以下路径中——

 C:\wamp\www\android_connect

现在执行代码后,我收到类似“ java.net.SocketTimeoutException:720000000 毫秒后无法连接到 /10.0.2.2(端口 8080):isConnected 失败:ETIMEDOUT(连接超时) ”的错误。

我通过特定链接来解决这个问题——

Android 连接到本地主机

但是想不明白是怎么解决的! :)

在这种情况下你能帮我吗?请注意,我正在使用 Android Studio 进行构建。

提前致谢!

原文由 Saumik Bhattacharya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我已经弄清楚它不起作用的原因。有两个问题——

  1. IP 地址不正确。因此,我将 IP 地址从 10.0.2.2 更改为 IPv4 地址 - 可以通过在 Windows 上键入 ipconfig 获得链接命令提示符和 链接

  2. 端口号 8080 也不正确。我在 httpd.conf 文件中设置了自己的端口号,例如 ##Listen 12.34.56.78:8383Listen 0.0.0.0:8383Listen [::0]:8383## ,在 Apache 下,我使用相同的端口号。

更改两者并重新启动 WAMP 服务器后,它就像一个魅力。

原文由 Saumik Bhattacharya 发布,翻译遵循 CC BY-SA 4.0 许可协议

仅在 Google Android 虚拟设备上使用 10.0.2.2 从您的 Android 连接到您的计算机。 Android 虚拟设备正在侦听 10.0.2.2 并将所有请求转发到您的计算机。

Genymotion Android 虚拟设备正在侦听 10.0.2.3 并将这些请求转发到您的计算机。

10.0.2.2 不适用于您真正的 Android 设备。如果你想在你的真实设备上使用它,你必须设置你的计算机的 IP,正如之前的答案所建议的那样。

原文由 styssi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题