如何获取Android Emulator的IP地址?

7z5jn7bk  于 2023-06-20  发布在  Android
关注(0)|答案(7)|浏览(246)

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

p4tfgftt

p4tfgftt1#

只是澄清一下:从您的应用程序中,您可以简单地将Emulator称为“localhost”或127.0.0.1
Web流量通过您的开发计算机进行路由,因此Emulator的External-IP是您的Internet提供商分配给该开发计算机的任何External-IP。开发机器始终可以通过10.0.2.2从您的设备访问。
如果您启动了多个Emulator,其中adb不工作,除非您通过Emulator的Local-IP(如adb -s 192.168.232.2:5555 shellpick one,则:

  • 就像真实的的Android设备一样
  • 在Emulator中,从最顶部向下滑动以打开菜单,
  • 在菜单中,按住WiFi,
  • 最后,转到当前WiFi连接的设置,
  • 在那里,您应该看到模拟器进程的IP。
yqlxgs2m

yqlxgs2m2#

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

  1. adb shell
  2. ifconfig eth0

这可能会给予你这样的东西:

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

或者,如果上面失败,请尝试:

  1. adb shell
  2. ifconfig wlan0

并在输出中查找inet addr:,例如,我的Emulator记录了inet addr:192.168.232.2

gajydyqb

gajydyqb3#

像这样:

  1. public String getLocalIpAddress() {
  2. try {
  3. for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
  4. NetworkInterface intf = en.nextElement();
  5. for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
  6. InetAddress inetAddress = enumIpAddr.nextElement();
  7. if (!inetAddress.isLoopbackAddress()) {
  8. return inetAddress.getHostAddress().toString();
  9. }
  10. }
  11. }
  12. } catch (SocketException ex) {
  13. Log.e(LOG_TAG, ex.toString());
  14. }
  15. return null;
  16. }

查看文档了解更多信息:NetworkInterface

展开查看全部
83qze16e

83qze16e4#

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

获取yoor模拟器的ip地址
转到adb shell并键入以下命令

  1. adb shell
  2. ifconfig eth0

运行此命令后,我得到

IP:10.0.2.15
掩码:255.255.255.0

这对我很有效。我也在做网络应用。

展开查看全部
xxls0lw8

xxls0lw85#

如果您需要引用主机的localhost,例如当您希望模拟器客户端联系主机上运行的服务器时,请使用别名10.0.2.2来引用主机的环回接口。从模拟器的Angular 来看,**localhost(127.0.0.1)**指的是自己的环回接口。
更多详情:https://developer.android.com/studio/run/emulator-networking#networkaddresses

9vw9lbht

9vw9lbht6#

  1. public String getLocalIpAddress() {
  2. try {
  3. for (Enumeration < NetworkInterface > en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
  4. NetworkInterface intf = en.nextElement();
  5. for (Enumeration < InetAddress > enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
  6. InetAddress inetAddress = enumIpAddr.nextElement();
  7. if (!inetAddress.isLoopbackAddress()) {
  8. return inetAddress.getHostAddress().toString();
  9. }
  10. }
  11. }
  12. } catch (SocketException ex) {
  13. Log.e(LOG_TAG, ex.toString());
  14. }
  15. return null;
  16. }
5anewei6

5anewei67#

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

  1. WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
  2. String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());

相关问题