ウェブアプリケーション,インジェクション,コマンドインジェクション

Androidアプリ開発 ネットワークプログラミング

デバイスのIPアドレスをゲット

Getting the IP Address of the Device

開発するアプリケーションのひとつにネットワーク操作をする時に
自身のIPアドレスを知る必要があります。
ここではデバイスのIPV4とIPV6のアドレスを取得する方法を示します。
以下のgetLocalIpv4Address()メソッドはAndroidデバイスの
Ipv4アドレスを取得する方法を示しています。

public String getLocalIpv4Address(){
  try{
   for (Enumerration<NetworkInterface> networkInterfaceEnum =
    NetworkInterface.getNetworkInterfaces();
    networkInterfaceEnum.hasMoreElements();){
    NetworkInterface networkInterface =
      networkInterfaceEnum.nextElement();
    for (Enumeration<InetAddress> ipAddressEnum = networkInterface
      .getInetAddresses(); ipAddressEnum.hasMoreElements();
    InetAddress inetAddress = (InetAddress) ipAddressEnum.nextElement();
    //---check that it is not a loopback address and it is ipv4---
    if(!inetAddress.isLoopbackAddress() &&
     InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())){
     return inetAddress.getHostAddress();
     }
    }
   }
  }catch (SocketException ex){
    Log.e("getLocalIpv4Address", ex.toString());
  }
}

上のコードはデバイス上のすべてのネットワークインターフェースを
繰り返し、InetAddressオブジェクトのgetHostAddress()メソッドを
使っていくことでインターフェースアドレスのIPV4バージョンの
アドレスを返します。
このメソッドはアドレスのバージョンがIPV4返されるだけで、
アドレスがループバックアドレス、127.0.0.1出ないことも確認します。
以下のgetLocalIpv6Address()メソッドは、
AndroidデバイスのIPv6アドレスを取得する方法を示します。

public String getLlocalIpv6Address(){
  try{
   for(Enumeration<NetworkInterface> networkInterfaceEnum =
    NetworkInterface.getNetworkInterfaces();
    networkInterfaceEnum.hasMoreElements();){
    NetworkInterface networkInterface =
     networkInterfaceEnum.nextElement();
    for(Enumeration<InetAddress> ipAddressEnum = networkInterface
      .getInetAddresses(); ipAddressEnum.hasMoreElements();){
     InetAddress inetAddress = (InetAddress) ipAddressEnum
      .nextElement();
     //---check that it is not a loopback address and it is not IPv4---
     if (!inetAddress.isLoopbackAddress()
      && !InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())){
      return inetAddress.getHostAddress().toString();
     }
    }
   }
  } catch(SocketException ex){
    Log.d("getLocalIpv6Address", ex.toString());
  }
  return null;
}

上のコードはIPv4の例と同じようになっておりますが、
この場合IPアドレスがループバックアドレスやIPv4出ないことを
確認しています。

ホーム
便利堂ロゴ
inserted by FC2 system