【问题标题】:How do I socket an Android program to a localhost server?如何将 Android 程序连接到 localhost 服务器?
【发布时间】:2012-04-26 15:31:46
【问题描述】:

我的服务器和客户端代码可以完美地用作 Java 应用程序。服务器在我的本地机器上运行并监听端口 4444。任何 Java 应用程序都可以轻松连接,但是当我将代码移至 Android 时,无论我尝试什么,我都会不断收到 IOException。我读到您必须将“localhost”更改为“10.0.2.2”,但我仍然收到 IOException。我从 whatsmyip.org 尝试了我的 IP 地址,但它仍然给了我一个 IOException。这是我的安卓代码...

package test.myPackage;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class TestProjectActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tv = new TextView(this);
        tv.setText("Hello, Android");
        setContentView(tv);

    Socket s = null;
    try {
        s = new Socket("10.0.2.2", 4444);
        tv.setText("socket: CONNECTED!");
    } catch (UnknownHostException e) {
        tv.setText("socket: unknown host");
    } catch (IOException e) {
        tv.setText("socket: IO Exception");
    }
}

}

【问题讨论】:

  • 您在本地网络上的 IP 是多少?你是linux还是windows?在 Windows 上打开一个命令窗口并在其中键入 ipconfig。只需将您的 IPV4 放入您的代码中即可。在 linux 上打开一个终端并执行ifconfig。显然,您的 ISP 已阻止从外部访问您的计算机。您的公共 IP 不是您想要的。

标签: java android sockets networking


【解决方案1】:

首先确保您的应用具有互联网权限。

您可以使用 10.0.2.2 别名的唯一情况是您的应用程序在模拟器上运行并且想要联系在主机上运行的某些东西。这不适用于实际的 android 设备。

对于实际的 android 设备,您要么必须将设备与托管服务器的 PC 置于同一个 wifi 网络上,要么找到一种滥用网络共享解决方案的方法,通过 USB 电缆将它们置于同一个网络上,或者将您的服务器移至可从 Internet 外部访问的机器上,以便能够从设备的移动网络连接访问它。

而且 EvilDuck 肯定有关于滥用 UI 线程的观点。

【讨论】:

  • 问题是我的应用没有互联网权限。我将 添加到清单中,现在它可以工作了。谢谢!
【解决方案2】:

据我了解,您正在与服务器位于同一网络的设备上运行 Android 客户端?然后你必须使用你的服务器内部 IP。这里的 localhost 显然会搜索设备上的服务器。

whatsmyip.org 会给你你的外部 IP。

确保设备确实在同一个网络上,确保您使用正确的内部 IP,确保您的服务器没有任何防火墙阻止此 LAN 端口。

为了停止在 UI 线程 ffs 上进行网络活动!!!

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 2014-01-14
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2012-09-19
    相关资源
    最近更新 更多