2011-11-08 5 views
0

여기 안드로이드 태블릿 IP 주소를 얻는 것과 관련된 문제가 있습니다.안드로이드 태블릿 IP 주소

타블렛 IP 주소에 대해 다음 코드를 사용하고 있습니다.

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()) { 
        return inetAddress.getHostAddress().toString(); 
       } 
      } 
     } 

inetAddress.getHostAddress는() 방법으로 IP 주소를 반환 FE80 :: 9a4b : 4aff : fe00 : 다른 형식보다는 122.xx.xxx.xxx 형식입니다, a6e1 .

Wifimanager 클래스를 사용하여 태블릿 IP 주소를 얻으면 122.xx.xxx.xxx이이 형식으로 만 반환됩니다.

그러나 일반 형식을 사용하면 왜 잘못된 형식으로 제공되는지 알 수 없습니다.

어느 한 사전에 ...이 문제에

감사를 좀 도와 주시겠습니까.

+0

나는 안드로이드 API에 대해서는 잘 모르지만, AFAIK, fe80 :: 9a4b : 4aff : fe00 : a6e1은 너무 커서 IP 주소가 될 수 없다. 당신이 잘못된 방법을 사용하고있는 것처럼 보입니다. – ArjunShankar

답변

0

fe80::9a4b:4aff:fe00:a6e1 전혀 틀리지 않습니다. 그것은 단지 새로운 스타일의 IPv6입니다.

새로운 appliactions는 항상 두 가지 형식으로 작동하도록 설계되어야합니다.

0

IPv6 주소입니다. 시작하려면 wikipedia article을보십시오. IPv6 주소를 IPv4 주소 (예 : xxx.xxx.xxx.xxx)로 변환 할 수는 있지만이를 보장하지는 않습니다.

+0

답장을 보내 주셔서 감사합니다. 우리는 IP6을 IP4로 변환하려고 시도합니다. 변환 된 IP가 IP 주소와 일치하지 않는 경우 WifiManager 클래스 반환 값과 일치하지 않습니다. – PoornaDroid

0

/* 사용 가능한 네트워크 인터페이스를 살펴보고 첫 번째 "알맞은"IPv4 주소를 선택하십시오. * 에뮬레이터는 기본적으로 10.0.2.15를 사용하므로 더 나은 기능이없는 경우에만 사용하십시오. */

public String getMyIp() { 
     Set<String> eligible = eligibleIpAddresses(); 

/* For the emulator, prefer an IP address other than 10.0.2.15 (default emulator address) 
      * but use it if it is the only one. */ 
     if (eligible.size() > 1) { 
      eligible.remove("10.0.2.15"); 
      return eligible.iterator().next(); 
     } else if (eligible.size() == 1) { 
      return eligible.iterator().next(); 
     } else { 
      Log.w("Using local IP address, no external objects will be discovered","---"); 
      return "127.0.0.1"; 
     } 
    } 

    public static Set<String> eligibleIpAddresses() { 
     Set<String> eligible = new HashSet<String>(); 
     try { 
      Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces(); 
      while (netInterfaces.hasMoreElements()) { 
       NetworkInterface ni = netInterfaces.nextElement(); 
       Enumeration<InetAddress> address = ni.getInetAddresses(); 
       while (address.hasMoreElements()) { 
        InetAddress addr = address.nextElement(); 
        if (!addr.isLoopbackAddress() && !(addr.getHostAddress().indexOf(":") > -1)) { 
         eligible.add(addr.getHostAddress()); 
        } 
       } 
      } 
     } catch (Exception e) { 
     } 
     return eligible; 
    }