从Android Emulator连接到LocalHost/10.0.2.2超时

Sau*_*rya 7 php java post android localhost

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

以下是我经历的链接列表 -

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

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

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

  4. 如何在android模拟器中连接localhost?

这是我的代码 -

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;
    }
Run Code Online (Sandbox Code Playgroud)

我试图通过WAMP服务器使用PHP连接Android与MySQL数据库.PHP文件(user_registration.php)保存在以下路径中 -

C:\wamp\www\android_connect
Run Code Online (Sandbox Code Playgroud)

现在执行代码后,我收到一个错误,如" java.net.SocketTimeoutException:在720000000ms之后无法连接到/10.0.2.2(端口8080):isConnected失败:ETIMEDOUT(连接超时) ".

我通过了特定的链接来解决这个问题 -

Android连接到localhost

但无法理解它是如何解决的!:)

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

提前致谢!

小智 8

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

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

10.0.2.2不适用于您的真实Android设备.如果要将其与真实设备一起使用,则必须设置计算机的IP,如前面的答案所示.


Sau*_*rya 5

我已经弄清楚了它为什么不起作用的原因。有两个问题-

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

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

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

  • 您能否解释“因此我将IP地址从10.0.2.2更改为IPv4地址”?谢谢 (4认同)
  • IPv4地址是什么? (4认同)
  • @ domji84-转到“命令提示符”,然后键入“ ipconfig”,它将列出IP地址。在那里您可以找到“ IPv4”地址。 (4认同)