получить IP-адрес компьютеров в сети WIFI на эмуляторе Android

Я хотел бы программно найти IP-адреса компьютеров, подключенных через Wi-Fi к Android-устройству или эмулятору. Как мне это сделать?


person Bhagya    schedule 20.01.2011    source источник


Ответы (3)


Можете ли вы поделиться logcat, я подозреваю, что может быть какая-то другая проблема. Попробуйте этот код (как есть) в образце приложения, чтобы проверить, только работает ли IP-адрес Wi-Fi.

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))
person HT03    schedule 21.01.2011
comment
Этот код не дает никакой ошибки, но показывает IP-адрес как 0.0.0.0 - person Bhagya; 21.01.2011
comment
На самом деле, если в качестве адреса отображается 0.0.0.0, это означает, что ваш телефон не подключен ни к одной сети Wi-Fi, даже если ваш WiFi включен на вашем устройстве. - person leochab; 19.05.2011

Как сказано в другой теме, эмулятор андроида работает в виртуальной частной сети.

Что означает, что эмулятор находится НЕ в той же сети, что и ваш компьютер, а в виртуальной. Ни один эмулятор не может видеть другие устройства, ни другие эмуляторы, ни другие устройства не могут видеть эмуляторы.

Кроме этого у меня есть вопрос:

Как я могу получить IP-адрес имени хоста с помощью WifiManager?

Например, мой компьютер находится в той же локальной сети, что и мой телефон Android (не в эмуляторе), и у него есть имя хоста, например User-PC. Когда я пытаюсь получить IP-адрес с помощью InetAddress.getByName("User-PC"); в java-приложении я получаю IP-адрес локальной сети, например 192.168.1.100, но когда я пробую его на телефоне, он не работает. Странно то, что я могу устанавливать соединения, если я знаю IP, но не могу разрешить его из имя хоста.

Любые идеи?

person Tony Bogdanov    schedule 05.01.2012

Если вы хотите определить IP-адрес «Эмулятора» или устройства Android, подключенного к любой сети, используйте этот код в своей программе. это даст вам точный 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());
      }
person Pir Fahim Shah    schedule 24.02.2013