2011年9月26日月曜日

Wi-Fiでゲートウェイにpingする (Android)

AndroidのWi-Fiを使ってpingする方法です。

まずはゲートウェイのアドレスを調べます。DhcpInfoのgatewayフィールドに入っています。

WiFiManager wifi = (WifiManager)getSystemService(WIFI_SERVICE);
DhcpInfo dhcpInfo = wifi.getDhcpInfp();
int gateway = dhcpInfo.gateway;

ここにはリトルエンディアンで入っています。これをビッグエンディアンの配列にします。

byte[] gatewayAddr = new byte[] {
        (byte)(gateway&255),
        (byte)((gateway>>8)&255),
        (byte)((gateway>>16)&255),
        (byte)((gateway>>24)&255)
};

あとは普通のJavaプログラムと同様にpingします。

InetAddress addr = InetAddress.getByAddress(gatewayAddr);
if ( addr.isReachable(3000) ) {
    …
}