83

我想通过代码获取当前运行的Android Emulator的 IP 地址。如何实现?

4

7 回答 7

175

澄清一下:在您的应用程序中,您可以简单地将模拟器称为“localhost”或 127.0.0.1。

Web 流量通过您的开发机器路由,因此模拟器的外部 IP 是您的提供商分配给该机器的任何 IP。开发机器始终可以从您的设备访问 10.0.2.2。

既然您只询问模拟器的 IP,那么您要做什么?

于 2009-11-12T14:07:13.670 回答
39

如果您确实希望将 IP 分配给您的模拟器:

adb shell
ifconfig eth0

这会给你类似的东西:

eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
于 2012-08-18T23:24:33.680 回答
27

像这样:

public String getLocalIpAddress() {
    try {
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                InetAddress inetAddress = enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress()) {
                    return inetAddress.getHostAddress().toString();
                }
            }
        }
    } catch (SocketException ex) {
        Log.e(LOG_TAG, ex.toString());
    }
    return null;
}

查看文档以获取更多信息:NetworkInterface

于 2009-11-12T07:06:44.053 回答
21

使用此方法,您将获得 100% 正确的 android 模拟器 IP 地址

获取你的模拟器的IP地址

转到 adb shell 并键入此命令

adb shell
ifconfig eth0

在此处输入图像描述

运行此命令后,我得到

IP : 10.0.2.15

面具:255.255.255.0

这对我有用。我也在为一个网络应用程序工作。

于 2013-05-18T11:11:49.830 回答
10

如果您需要引用主机的 localhost,例如当您希望模拟器客户端联系运行在同一主机上的服务器时,请使用别名10.0.2.2来引用主机的环回接口。从模拟器的角度来看,localhost(127.0.0.1)指的是它自己的loopback接口。更多细节:http: //developer.android.com/guide/faq/commontasks.html#localhostalias

于 2013-02-18T09:48:53.473 回答
3
public String getLocalIpAddress() {

    try {
        for (Enumeration < NetworkInterface > en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            for (Enumeration < InetAddress > enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                InetAddress inetAddress = enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress()) {
                    return inetAddress.getHostAddress().toString();
                }
            }
        }
    } catch (SocketException ex) {
        Log.e(LOG_TAG, ex.toString());
    }
    return null;
}
于 2012-01-12T06:26:53.150 回答
0

在我的应用程序代码中,我可以像下面这样轻松获取正在运行的设备 IP 地址:

WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
于 2020-05-05T03:45:29.213 回答