如何获得Android Emulator的IP地址?


Answers:


158

需要说明的是:在您的应用程序中,您可以简单地将仿真器称为“ localhost”或127.0.0.1。

Web通信是通过您的开发计算机路由的,因此模拟器的外部IP就是您的提供者分配给该计算机的IP。始终可以从设备10.0.2.2访问开发机。

由于您仅询问模拟器的IP,因此您要尝试做什么?


8
为此,我要投票100次。在阅读您的文章之前,我不知道我的应用程序如何与我正在运行的另一台本地服务器通信。谢谢!
秒杀事件

如何从10.0.2.2开始访问您的开发机器?我尝试了ping操作,但是什么也没做,请点击此处。右侧的ifconfig -app和左侧的终端仿真器试图ping dev-machine。在localhost中看不到任何内容,是否有任何简单的测试?
hhh 2012年

@hhh您可以尝试JuiceSSH:play.google.com/store/apps/details? id=com.sonelli.juicessh您可以从提到的IP或主机的真实IP访问主机。两种变体都对我有用。
MuhamedHuseinbašić2015年

我相信来自仿真器的流量首先会通过“虚拟”路由器进行路由(IP地址为10.0.2.1,而不是直接。)因此,该路由器10.0.2.1与主机/开发机之间应该有一个额外的连接127.0.0.1/10.0.2.2。我通常通常会更改我要连接的端口号
stdout

36

如果您确实希望将IP分配给仿真器,请执行以下操作:

adb shell
ifconfig eth0

这会给你类似的东西:

eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]

路易斯说:我尝试过德里克方法。它可以在adb shell中执行ping操作
Tobi Nary

6
我收到以下错误消息adb shellifconfig: eth0: No such device为什么有任何想法?
awavi

3
@awavi可能处于不同的界面下,例如wlan0
William Reed

26

像这样:

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


5
并且不要忘记'android.permission.INTERNET'权限
斯特凡

2
这给出IP6地址,如何获得IP4?
Akash Kava 2015年

19

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

获取您的模拟器的IP地址

转到adb shell并键入此命令

adb shell
ifconfig eth0

在此处输入图片说明

运行此命令后,我得到

IP:10.0.2.15

遮罩:255.255.255.0

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



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;
}

0

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

WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.