如何使用以太网获取默认网关,而不是wifi

时间:2012-06-08 02:17:47

标签: google-tv

我期待知道如何以编程方式查找默认网关地址。 我已经找到了Wifi-Manager的默认网关地址(getDhcpInfo()), 但我没有在以太网模式下找到它。 请。帮帮我~~

4 个答案:

答案 0 :(得分:0)

如果您希望一次建立两个连接,则可以转到命令提示符并检查所通告的路由。如果Route具有单个默认网关,则您可以连接到该特定网络。如果它有两个默认网关,那么您可以访问随机网络

感谢 bowmi

答案 1 :(得分:0)

我认为这适用于Google-TV,如果您将Google-TV添加到标题中可能会有所帮助。有没有办法静态声明此设备上的网关?如果有,您可以尝试登录路由器,找到默认网关,然后直接将网关放入设备的配置选项中。

答案 2 :(得分:0)

以下是在Google TV设备的以太网上找到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();
}

答案 3 :(得分:0)

这是我们在Able Remote中使用的代码。请注意,我们检查界面是否已启动(仅适用于Android 2.3及更高版本)。这是必要的,因为用户报告的设备具有多个IP地址,但一次只有一个直播:

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;
    }