在Android Emulator上获取WIFI网络中的计算机的IP地址

时间:2011-01-20 16:27:50

标签: android emulation

我想以编程方式查找通过WiFi连接到Android设备或模拟器的计算机的IP地址。我该怎么做?

4 个答案:

答案 0 :(得分:2)

你可以共享logcat,我怀疑可能还有其他问题。在示例应用程序中尝试使用此代码(按原样),仅检查Wi-Fi IP地址是否正常工作

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();

int ipAddress = wifiInfo.getIpAddress();

String ip = null;

ip = String.format("%d.%d.%d.%d",
(ipAddress & 0xff),
(ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff),
(ipAddress >> 24 & 0xff))

答案 1 :(得分:1)

如另一主题所述,android Emulator可在虚拟专用网络上运行。

这意味着模拟器与您的计算机不在同一网络上,而是在虚拟模拟器上。没有模拟器可以看到其他设备,也没有其他模拟器,也没有其他设备可以看到模拟器。

除此之外,我有一个问题:

如何使用WifiManager获取主机名的IP地址?

例如,我的电脑与我的Android手机(不是模拟器)在同一个局域网上,它有一个像User-PC这样的主机名。当我尝试使用InetAddress.getByName(“User-PC”)获取IP时;在java应用程序上,我得到的局域网IP如192.168.1.100,但是当我在手机上尝试它时它不起作用。奇怪的是我可以建立连接,如果我知道IP,但似乎无法解决它主机名。

有什么想法吗?

答案 2 :(得分:1)

如果要检测连接到任何网络的“仿真器”或Android设备的IP地址,请在您的程序中使用此代码。它将为您提供网络为您的设备分配的确切IP地址。

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())
                         { 
                               String Ip= inetAddress.getHostAddress().toString();
                               //Now use this Ip Address...
                         }   
                       }
                  }

            }
     catch (SocketException obj) 
     { 
       Log.e("Error occurred during IP fetching: ", obj.toString());
      }

答案 3 :(得分:0)