2016-11-23 4 views
3

에서 프로그래밍 방식으로 프로그래밍 방식으로 IPv4 및 IPv6 주소를 가져 오는 방법에 대해 토론했습니다. 이러한 다른 질문과 답변의 문제점은 다음과 같습니다Wifi 및 Carier 네트워크에있을 때 비 특허 방법으로 Android 기기의 IPv4 및 IPv6 가져 오기

  • 그 질문/답변을 해주기 때문에 종종 사용되지 않는 의해 상당히 오래된 이다. 비 사용 권장되지 않음 방식 (예 : InetAddressUtils은 사용되지 않으며 다른 옵션도 지원됨)으로 완료 할 수있는 방법을 찾고 있습니다.
  • 와이파이 또는 네트워크에서 주소를 주소로 으로 설정하면 알려 주시면됩니다.

(즉, 가능한 경우)은 긴 방법이없는 짧은깔끔한 방식으로 수행하는 방법을 말해 줄 수있는 사람이 있습니까?

IPv4의
+0

https://developer.android.com/reference/android/net/ConnectivityManager.html –

+0

주셔서 감사합니다, 나는 전에 그것을 확인하지만, 해당 페이지했습니다 당시에는 큰 도움이되지 못했습니다. – lehrer

답변

1

은, 당신이 사용할 수있는 IPv6를

public String getIpv4() { 
      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(); 
         System.out.println("ip1--:" + inetAddress); 
         System.out.println("ip2--:" + inetAddress.getHostAddress()); 

         if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { 
          String ipaddress = inetAddress.getHostAddress().toString(); 
          return ipaddress; 
         } 


        } 
       } 
      } catch (Exception ex) { 
       Log.e("IP Address", ex.toString()); 
      } 
      return null; 
     } 

//ipv6 
    public String getLocalIpV6() { 
     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(); 
        System.out.println("ip1--:" + inetAddress); 
        System.out.println("ip2--:" + inetAddress.getHostAddress()); 

        if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) { 
         String ipaddress = inetAddress.getHostAddress().toString(); 
         return ipaddress; 
        } 


       } 
      } 
     } catch (Exception ex) { 
      Log.e("IP Address", ex.toString()); 
     } 
     return null; 
    } 
관련 문제