1

プログラムでデフォルト ゲートウェイ アドレスを見つける方法を知りたいです。Wifi-Manager(getDhcpInfo()) のデフォルト ゲートウェイ アドレスは既に見つかりましたが、イーサネット モードでは見つかりません。お願いします。助けて~~

4

4 に答える 4

0

GoogleTVデバイスのイーサネットでIPアドレスを見つける方法は次のとおりです。

private static final String IPADDRESS_PATTERN =
        "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";

public String getLocalIpAddress() {
    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();
                String ipAddress = inetAddress.getHostAddress().toString();
                if (!inetAddress.isLoopbackAddress()
                        && validate(ipAddress)) {

                    return ipAddress;
                }
            }
        }
    } catch (SocketException e) {
        // TODO(mjoshi): Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}


/**
 * Validate ip address with regular expression
 * 
 * @param ip ip address for validation
 * @return true valid ip address, false invalid ip address
 */
public boolean validate(final String ip) {
    Pattern pattern = Pattern.compile(IPADDRESS_PATTERN);
    Matcher  matcher = pattern.matcher(ip);
    return matcher.matches();
}
于 2012-06-08T19:36:04.990 に答える
0

一度に 2 つの接続が必要な場合は、コマンド プロンプトに移動して、アドバタイズされているルートを確認します。ルートに単一のデフォルト ゲートウェイがある場合は、その特定のネットワークに接続できます。2 つのデフォルト ゲートウェイがある場合は、両方のネットワークにランダムにアクセスできます。

ありがとうボウミ

于 2012-06-08T04:41:49.690 に答える
0

これは、Able Remote で使用するコードです。インターフェイスが起動しているかどうかを確認することに注意してください (Android 2.3 以降でのみ動作します)。これは、ユーザーが複数の IP アドレスを持ち、一度に 1 つのみのデバイスを報告したため必要です。

public static String getLocalIpAddress() {
        try {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = en.nextElement();
                if (intf.isUp()) {
                    for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                        InetAddress inetAddress = enumIpAddr.nextElement();
                        if (!inetAddress.isLoopbackAddress()) {
                            if (inetAddress instanceof Inet4Address) { // only want ipv4 address
                                return inetAddress.getHostAddress().toString();
                            }
                        }
                    }
                }
            }
        } catch (Throwable e) {
            Log.e(LOG_TAG, "Failed to get the IP address", e);
        }

        return null;
    }
于 2012-06-20T16:55:21.297 に答える
0

これは Google-TV 用だと思いますが、タイトルに Google-TV を追加していただけると助かります。このアプライアンスでゲートウェイを静的に宣言する方法はありますか? 存在する場合は、ルーターにログインしてデフォルト ゲートウェイを見つけ、そのゲートウェイをデバイスの構成オプションに直接入力してみてください。

于 2012-06-08T18:28:07.110 に答える