2012-01-12 2 views
1

Возможного дубликат:
How do you get the current DNS servers for Android?как получить информацию DNS в андроиде

Я хочу, чтобы разжиться сервера DNS в андроиде. this thread говорит, что есть класс android.net.NetworkUtils, но я узнал, что такого класса нет. Тот же вопрос был задан here, но он не был разрешен.

+0

Итак, вы хотите получить информацию о DHCP или DNS? Это совершенно разные вещи. – svick

+0

@svick Мне нужна информация о dns. но не для интерфейса wifi, а для интерфейса gprs/3g. – prongs

+0

@prongs может уточнить, как выраженный ответ помогает вам получить DNS-серверы? –

ответ

3

Вот пример проекта, который работает:

https://github.com/rorist/android-network-discovery/blob/master/src/info/lamatricexiste/network/DnsDiscovery.java

for (long i = start; i < end + 1; i++) { 
    hosts_done++; 
    HostBean host = new HostBean(); 
    host.ipAddress = NetInfo.getIpFromLongUnsigned(i); 
    try { 
     InetAddress ia = InetAddress.getByName(host.ipAddress); 
     host.hostname = ia.getCanonicalHostName(); 
     host.isAlive = ia.isReachable(timeout) ? 1 : 0; 
    } catch (java.net.UnknownHostException e) { 
     Log.e(TAG, e.getMessage()); 
    } catch (IOException e) { 
     Log.e(TAG, e.getMessage()); 
    } 
    if (host.hostname != null && !host.hostname.equals(host.ipAddress)) { 
     // Is gateway ? 
     if (discover.net.gatewayIp.equals(host.ipAddress)) { 
      host.deviceType = 1; 
     } 
     // Mac Addr 
     host.hardwareAddress = HardwareAddress.getHardwareAddress(host.ipAddress); 
     // NIC vendor 
     try { 
      host.nicVendor = HardwareAddress.getNicVendor(host.hardwareAddress); 
     } catch (SQLiteDatabaseCorruptException e) { 
      Log.e(TAG, e.getMessage()); 
     } 
     publishProgress(host); 
    } else { 
     publishProgress((HostBean) null); 
+0

ну, на самом деле я хочу получить адреса dns, но многие упомянутые темы я должен получить объект класса DhcpInfo, что я имел в виду, получая информацию dhcp. – prongs

0

На самом деле, это выглядит как хороший ответ:

How do you get the current DNS servers for Android?

android.net.ConnectivityManager доставит вам массив Усиление сети g getAllNetworkInfo(). Затем с помощью android.net.NetworkUtils.runDhcp(), чтобы получить DhcpInfo для любого заданного сети интерфейса - DhcpInfo structure имеет IP-адрес для dns1 и dns2 для этого интерфейса (которые являются целочисленными значениями, представляющие IP-адрес).

Вот еще одна хорошая ссылка:

http://www.devdaily.com/java/jwarehouse/android/wifi/java/android/net/wifi/WifiStateTracker.java.shtml

+0

Вы внимательно прочитали вопрос? Я сказал, что ничего подобного android.net.NetworkUtils я не знаю, почему – prongs

Смежные вопросы