Android 获取网关 ip 和 DNS ip

这篇具有很好参考价值的文章主要介绍了Android 获取网关 ip 和 DNS ip。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考下方 PingUtil.java 代码文章来源地址https://www.toymoban.com/news/detail-625382.html

import android.content.Context;
import android.net.DhcpInfo;
import android.net.wifi.WifiManager;
import android.text.format.Formatter;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.InetAddress;
import java.util.LinkedList;

public class PingUtil {
	
	/**
	 * 获取网关(API>=29)
	 */
    public static String getGateway(Context context) {
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
        DhcpInfo dhcpInfo = wifiManager.getDhcpInfo();
        int gateway = dhcpInfo.gateway;
        return Formatter.formatIpAddress(gateway);
    }

    /**
     * 获取dns
     */
    public static String getDns() {

        String[] dnsServers = getDnsFromCommand();
        // 组装
        StringBuffer sb = new StringBuffer();
        if (dnsServers != null) {
            sb.append(dnsServers[0]);  //注意这里只会返回1个dns服务器ip
        }
        return sb.toString();
    }


    //通过 getprop 命令获取
    private static String[] getDnsFromCommand() {
        LinkedList<String> dnsServers = new LinkedList<>();
        try {
            Process process = Runtime.getRuntime().exec("getprop");
            InputStream inputStream = process.getInputStream();
            LineNumberReader lnr = new LineNumberReader(new InputStreamReader(inputStream));
            String line = null;
            while ((line = lnr.readLine()) != null) {
                int split = line.indexOf("]: [");
                if (split == -1) continue;
                String property = line.substring(1, split);
                String value = line.substring(split + 4, line.length() - 1);
                if (property.endsWith(".dns")
                        || property.endsWith(".dns1")
                        || property.endsWith(".dns2")
                        || property.endsWith(".dns3")
                        || property.endsWith(".dns4")) {
                    InetAddress ip = InetAddress.getByName(value);
                    if (ip == null) continue;
                    value = ip.getHostAddress();
                    if (value == null) continue;
                    if (value.length() == 0) continue;
                    dnsServers.add(value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dnsServers.isEmpty() ? new String[0] : dnsServers.toArray(new String[dnsServers.size()]);
    }
    
}

到了这里,关于Android 获取网关 ip 和 DNS ip的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 以用户角度理解网络-静态IP和动态IP-DNS域名系统-网关- DHCP协议- 一次简单的网络请求

    本机的IP地址 子网掩码 网关的IP地址 DNS的IP地址 静态IP指的是计算机每次开机都分到相同的IP地址,动态IP指的是计算机开机后自动地分配一个IP地址,不用人为设定。 动态IP所使用的协议就是DHCP协议。 TCP/IP提供了通过IP地址来连接到设备的功能,但对用户来讲,记住某台设备

    2024年02月02日
    浏览(32)
  • 计算机网络基础知识(二)—— 什么是Ip地址、Mac地址、网关、子网掩码、DNS

    初次接触网络时,只知道电脑连接网线,就可以打开4399玩小游戏,可以登录QQ和朋友聊天; 再次接触网络时,知道了怎么查看自己电脑的网络情况(Windows终端下敲入ipconfig),但是对于其中的一串串数字完全一头雾水,现在来看下这些数字都代表着什么意思吧🤓 I P 地址是网

    2024年02月03日
    浏览(36)
  • Java、Android 之 TCP / IP

    TCP、IP是一系列协议组成的网络分层模型  客户端向服务端发送请求可能会走N条链路,这个过程叫路由 TCP传输 一般在1--1024端口 必须连接以后才能传输数据 UDP协议通常只是发送数据 TCP连接 TCP需要建立连接才能通信,建立连接需要端口,Socket  建立连接需要三次握手,A--

    2024年02月13日
    浏览(36)
  • Android获取用户ip地址

    经过实测,并不能真的获取到网络上实际的外网IP地址,只能拿到他下面的内网IP地址,凑合着用吧 参考来源:https://blog.csdn.net/sinat_16458039/article/details/50260589

    2024年02月16日
    浏览(44)
  • Android开发知识学习——TCP / IP 协议族

    一系列协议所组成的一个网络分层模型 为什么要分层? 因为网络的不稳定性 Application Layer 应用层:HTTP、FTP、DNS,提供了网络应用程序之间的通信机制 Transport Layer 传输层:TCP、UDP,提供可靠的端到端的数据传输服务的层次 Internet Layer 网络层:IP,网络中所有数据传输的入口

    2024年02月07日
    浏览(33)
  • Ubuntu设置IP地址、网关、DNS

    Ubuntu设置IP地址、网关、DNS

    2024年02月11日
    浏览(35)
  • android开发:获取手机IP和UDP广播

            UDP广播在通讯双方互相不知道对方IP的情况下很有用。这种情形我们也可以用遍历网段来实现,但是比较粗暴,如果网段比较大,不是最多256台主机的C类网段的话,很难做遍历。         UDP广播是解决这种问题的标准方案。         注意,广播和多播是不同的,广

    2024年02月19日
    浏览(29)
  • Ubuntu22.04配置静态IP-网关-DNS

    要在Ubuntu系统中配置网络,可以通过以下步骤进行操作: 1.打开终端:可以使用“Ctrl+Alt+T”快捷键打开终端,或者从应用程序菜单中找到“终端”。 2.检查网络接口:输入以下命令检查当前系统中的网络接口列表: 接口列表将显示在终端中。常见的接口名称可能包括\\\"eth0\\\"、

    2024年02月13日
    浏览(50)
  • Android 11.0 设置静态ip重启后获取不到ip的修复

    在11.0的系统rom定制化开发中,在一些产品开发中,在对于设置静态ip以后可以正常使用, 但是遇到一个新问题 就是开机以后,获取不到ip,地址,这就有点不正常了, 获取不到ip 就自然连不上网了,所以要分析问题所在解决问题 Android以太网服务启动源码分析中,我们知道在

    2024年02月09日
    浏览(26)
  • Ubuntu配置网卡信息(ip、网关、子网掩码、dns)

      本文介绍了Ubuntu系统下配置网卡的信息,包含网卡的ip地址、网关、子网掩码和dns。   网卡的ip地址可以设置成动态(DHCP)或静态的,网关和掩码根据实际需求选择是否设置。dns指域名系统,为什么要设置dns呢?简单理解就是,你的电脑(系统)想要访问互联网(外网

    2024年01月18日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包