2013-06-22 11 views
15

Android cihazımda IP adresini (IPV4) bulmaya çalışıyorum. Aşağıdaki koduYerel IP adresimi alıyorum (192.168.xxxx) (IPV4)

InetAddress inet = InetAddress.getLocalHost(); 
System.out.println(inet.getHostAddress()); //giving me 127.0.0.1 

yaparsanız
kod bana 127.0.0.1 veriyor.
Gerçek IP 198.168.xx.xx dosyasını almak istedim.

(bana gerçek IP vererek aynı kod olsa My pc de.)

+1

[OT] üzgünüm ama özel IP (192.168 gizliyor. xxx?) gerekli değildir, bu bilgiyi bilen kişiler tarafından hacklenemezsiniz. –

+0

@GrailsGuy Bunun için çoğaltılamaz, OP, 192.168 yerel ağ adresini ve genel yönlendirici adresini istemez. – laalto

+0

@LuiggiMendoza Biliyorum, onu koymak için tembel davrandım. –

cevap

23
public static String getIpAddress() { 
      try { 
       for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
        NetworkInterface intf = en.nextElement(); 
        for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
         InetAddress inetAddress = enumIpAddr.nextElement(); 
         if (!inetAddress.isLoopbackAddress()&&inetAddress instanceof Inet4Address) { 
          String ipAddress=inetAddress.getHostAddress().toString(); 
          Log.e("IP address",""+ipAddress); 
          return ipAddress; 
         } 
        } 
       } 
      } catch (SocketException ex) { 
       Log.e("Socket exception in GetIP Address of Utilities", ex.toString()); 
      } 
      return null; 
    } 

izinleri

ver Ayrıca mainfest ekleyin.

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

. Adresimde "fe80 :: 2064: 32ff: fe5d: 2edf% p2p0" alıyorum. Bu ipv6 adresi midir? ipv4 adresi nasıl alınır? Tüm arayüzleri kontrol etmek için –

+0

+1. Bu, hem wifi hem de hücresel arabirimlerle ilgilenecektir –

+0

@VishnudevK Bu nedenle, yönlendirici ipv6 Adresi için yapılandırılmıştır. – Ayush

2

IP adresinizi almak için bunu kullanabilirsiniz.

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
int ipAddress = wifiManager.getConnectionInfo().getIpAddress(); 
return String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff), 
     (ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff)); 

Bu form "XXXX"

bir dize olarak sizin manifest.xml gereken tek iznine döndürür

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
+0

Ve WiFi kullanmıyorsa? – SJuan76

+0

Dahili bir LAN adresi almak için wifi kullanmayan bir aygıtın örneği nedir? 198.168.xx.xx. Ethernet portu mu? –

+0

Sıklıkla, soru gövdesine yoğunlaşıyorum ve başlıktaki verileri özlüyorum (“LAN” bölümünün bildirildiği tek yer). Ve evet, bir ethernet portu mümkündür (yine de bu günlerde o sıklıkta olmadığını kabul ediyorum). – SJuan76

İlgili konular