精华内容
下载资源
问答
  • windows下获取dns地址

    千次阅读 2019-04-08 22:00:42
    利用nslookup获取dns服务器地址,再通过正则表达式过滤。

    利用nslookup获取dns服务器地址,再通过正则表达式过滤。

    1. 利用nslookup获取服务器信息

    • process.start("cmd", QStringList()<<"/c"<<"nslookup %COMPUTERNAME% | findstr /i address");
    • /i为匹配不区分大小写。

    2. 正则筛选dns

    • QRegExp reg("[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}")
    • reg.cap(0)为dns地址;

    3. 运行示例

    #include <QCoreApplication>
    #include <QProcess>
    #include <QDebug>
    #include <QRegExp>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        QProcess process;
        process.start("cmd", QStringList()<<"/c"<<"nslookup %COMPUTERNAME% | findstr /i address");
        process.waitForStarted(3000);
        process.waitForFinished(3000);
        QString info = process.readAllStandardOutput().trimmed();
    
        QStringList infos = info.split("\r\n");
    
        QRegExp reg("[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}");
        QString dns;
        for (int i = 0; i < infos.count(); i++) {
            if (reg.indexIn(infos.at(i)) != -1) {
                dns = reg.cap(0);
                break;
            }
        }
    
        return a.exec();
    }
    
    展开全文
  • Android 获取DNS

    千次阅读 2019-06-24 15:10:58
    public class DnsUtil { /** * 获取dns * * @param context * @return */ public static String getDns(Context context) { /** * 获取dns */ Str...
    public class DnsUtil {
    
        /**
         * 获取dns
         *
         * @param context
         * @return
         */
        public static String getDns(Context context) {
            /**
             * 获取dns
             */
            String[] dnsServers = getDnsFromCommand();
            if (dnsServers == null || dnsServers.length == 0) {
                dnsServers = getDnsFromConnectionManager(context);
            }
            /**
             * 组装
             */
            StringBuffer sb = new StringBuffer();
            if (dnsServers != null) {
                for (int i = 0; i < dnsServers.length; i++) {
                    sb.append(dnsServers[i]);
                    sb.append(" / ");
                }
            }
            //
            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()]);
        }
    
    
        private static String[] getDnsFromConnectionManager(Context context) {
            LinkedList<String> dnsServers = new LinkedList<>();
            if (Build.VERSION.SDK_INT >= 21 && context != null) {
                ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
                if (connectivityManager != null) {
                    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
                    if (activeNetworkInfo != null) {
                        for (Network network : connectivityManager.getAllNetworks()) {
                            NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
                            if (networkInfo != null && networkInfo.getType() == activeNetworkInfo.getType()) {
                                LinkProperties lp = connectivityManager.getLinkProperties(network);
                                for (InetAddress addr : lp.getDnsServers()) {
                                    dnsServers.add(addr.getHostAddress());
                                }
                            }
                        }
                    }
                }
            }
            return dnsServers.isEmpty() ? new String[0] : dnsServers.toArray(new String[dnsServers.size()]);
        }
    
    }
    
    • 这种方式是有缺陷的:wifi情况下,高版本的手机获取到的dns是内网ip(反而是一些低版本的手机,或者比较老的手机没这个问题)
    • 网易有一个获取dns地址的get请求地址:http://xx.nstool.netease.com
      在这里插入图片描述

    暂时没有找到一个完美的办法获取DNS,有了解的同学,请留言

    展开全文
  • linux 只获取dns服务器地址

    千次阅读 2017-01-22 10:04:28
    我的想法是定时去查看/etc/resolve.conf文件,如果为空,则获取一次dns。 在嵌入式linux中,我们使用busybox的udhcpc来获取ip,netmask,网关和dns。 运行udhcpc,在获取到ip,dns等信息后并不会直接更细系统的...

    有一款设备需要使用静态ip,但是还要用到dns解析域名。我的想法是定时去查看/etc/resolve.conf文件,如果为空,则获取一次dns。


    在嵌入式linux中,我们使用busybox的udhcpc来获取ip,netmask,网关和dns。

    运行udhcpc,在获取到ip,dns等信息后并不会直接更细系统的相关信息,而是调用一个脚本去设置。如本次使用的/etc/udhcpc.d/50default

    #!/bin/sh

    # udhcpc script edited by Tim Riker <Tim@Rikers.org>

    [ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1

    RESOLV_CONF="/etc/resolv.conf"
    [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
    [ -n "$subnet" ] && NETMASK="netmask $subnet"

    # return 0 if root is mounted on a network filesystem
    root_is_nfs() {
        sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\1 \2/p' /proc/mounts |
        grep -q "^/ \(nfs\|smbfs\|ncp\|coda\)$"
    }

    have_bin_ip=0
    if [ -x /bin/ip ]; then
      have_bin_ip=1
    fi

    case "$1" in
        deconfig)
            if [ -x /sbin/resolvconf ]; then
                /sbin/resolvconf -d "${interface}.udhcpc"
            fi
            if ! root_is_nfs ; then
                            if [ $have_bin_ip -eq 1 ]; then
                                    ip addr flush dev $interface
                                    ip link set dev $interface up
                            else
                                    /sbin/ifconfig $interface 0.0.0.0
                            fi
            fi

            ;;

        renew|bound)
                    if [ $have_bin_ip -eq 1 ]; then
                            ip addr add dev $interface local $ip/$mask $BROADCAST
                    else
                            /sbin/ifconfig $interface $ip $BROADCAST $NETMASK
                    fi

            if [ -n "$router" ] ; then
                if ! root_is_nfs ; then
                                    if [ $have_bin_ip -eq 1 ]; then
                                            while ip route del default 2>/dev/null ; do
                                                    :
                                            done
                                    else
                                            while route del default gw 0.0.0.0 dev $interface 2>/dev/null ; do
                                                    :
                                            done
                                    fi
                fi

                metric=0
                for i in $router ; do
                                    if [ $have_bin_ip -eq 1 ]; then
                                            ip route add default via $i metric $metric
                                    else
                                            route add default gw $i dev $interface metric $metric 2>/dev/null
                                    fi
                                    metric=$(($metric + 1))
                done
            fi


            # Update resolver configuration file
            R=""
            [ -n "$domain" ] && R="domain $domain
    "
            for i in $dns; do
                echo "$0: Adding DNS $i"
                R="${R}nameserver $i
    "
            done

            if [ -x /sbin/resolvconf ]; then
                echo -n "$R" | /sbin/resolvconf -a "${interface}.udhcpc"
            else
                echo -n "$R" > "$RESOLV_CONF"
            fi
            ;;
    esac

    exit 0


    新建一个脚本,复制/etc/udhcpc.d/50default的内容并将红色字体部分去掉。执行下面的命令即可只更新dns。

    udhcpc -s /dir/test.sh -q

    -s后面的脚本必须用绝对地址,否则只会去/etc/udhcpc.d/目录查找相关脚本。

    -q是为了执行一次即退出,否则udhcpc会常驻后台。





    展开全文
  • VC++获取DNS服务器地址

    千次阅读 2012-11-14 18:24:39
    DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。 DNS 是...



    DNS 是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
     DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由解析器以及域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。[1]
      其中域名必须对应一个IP地址,而IP地址不一定只对应一个域  动态dns名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。在Internet上域名与IP地址之间是一对一(或者多对一)的,也可采用DNS轮询实现一对多,域名虽然便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。DNS 命名用于 Internet的 TCP/IP网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入 DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如 IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。[2]
      在IPV4中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是我们看到的IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。现在已开始试运行、将来必将代替IPv4的IPV6中,将以128位二进制数表示一个IP地址。






    #include <stdio.h>
    #include <windows.h>
    #include <Iphlpapi.h>
    
    #pragma comment(lib, "Iphlpapi.lib")
    
    
    int main()
    {
    	FIXED_INFO fi;
    	ULONG ulOutBufLen = sizeof(fi);
    
    	// 获取本地电脑的网络参数
    	if(::GetNetworkParams(&fi, &ulOutBufLen) != ERROR_SUCCESS)
    	{
    		printf(" GetNetworkParams() failed \n");
    		return -1;
    	}
    
    	// 主机名称
    	printf(" Host Name: %s \n", fi.HostName);
    
    	// 电脑注册的域名
    	printf(" Domain Name: %s \n", fi.DomainName);
    
    	// 打印出所有的DNS服务器
    	printf(" DNS Servers: \n");
    	printf(" \t%s \n", fi.DnsServerList.IpAddress.String);
    	IP_ADDR_STRING *pIPAddr = fi.DnsServerList.Next;
    	while(pIPAddr != NULL)
    	{
    		printf(" \t%s \n", pIPAddr->IpAddress.String);
    		pIPAddr = pIPAddr->Next;
    	}
    
    	return 0;
    }
    


    展开全文
  • 如图三台电脑分别在不同的vlan下,地址、掩码、网关自动获取并指定所有电脑的dns192.168.1.254 1.创建vlan,配置地址,划分接口 2.系统视图下开启dhcpg功能 命令:dhcp enable 3.进入所需要开启dhcp的vlan设置自动...
  • DNS获取 dns-prefetch

    千次阅读 2019-10-15 18:43:13
    DNS获取是一种DNS预解析技术,当你浏览网页时,浏览器会在加载网页时对网页中配置了预获取的域名提前进行解析缓存,这样一来,网站中使用到这些域名就不用再去DNS服务器解析了,直接使用预先解析好的就可以。...
  • DNS预获取dns-prefetch

    千次阅读 2014-07-24 17:26:57
    DNS Prefetch就是DNS获取。 在前段优化中关于DNS的有两点:一是减少DNS的请求次数,第二个就是进行DNS预先获取
  • C#获取ip地址dns、mac地址、cpu信息

    千次阅读 2017-08-30 18:43:53
    /// /// 使用 C# 自带的类库实现计算机信息获取 /// public class DefaultDeviceInfo { public virtual string GetCpuId() { try { string cpuInfo =
  • powershell脚本获取DNS

    2018-07-19 16:28:07
    $wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'true'" $CDNS = $wmi.DNSServerSearchOrder
  • dhcp 获取dns 失败

    千次阅读 2018-01-30 15:36:24
    最后发现,是因为/etc/dhcpcd/dhcpcd-hooks/20-dns.conf 这个脚本中,将DNS写死了,如下代码片,每次设置完以后,还去在设置一次。 setprop dhcp.${intf}.dns${dnsvalue} 203.82.48.3 setprop dhcp.${i
  • 1. 计算机设置自动获取后,它会向网内发送个广播,当服务器收到这个包时就会回应个地址给这台机器,机器取到回应后设置完成
  • 局域网的配置,之前查找了很多方法都是关于EthernetManager(已隐藏,无法直接调用),试过很多种但是还是没成功调到过这个对象,然后直接利用adb 命令获取 获取以太网的连接信息 1.获取所有有效网关 /** * @return ...
  • 我们有时候会遇到服务器无法上网,这时候我们可以看下服务器的IP地址和DNS地址是否设置为自动获取 无法上网的截图 按照以下步骤设置服务器自动获取IP地址和DNS地址 ...
  • IP地址DNS没有获取正确。 开始 — 运行 — 输入cmd回车 — 输入ipconfig/release回车 — 输入ipconfig/renew回车 — 等重新获取地址完成后就可以了
  • 对端IP地址可能会改变,想通过dns方式来获取对端IP地址。即在本地文件中配置对端网址,通过该网址获取到IP。我写了如下代码,ping www.baidu.com有回复报文,但是程序却得到IP地址,还需要什么配置吗?请高手指导下...
  • win10 手动设置 DNS 地址

    千次阅读 2020-06-15 16:22:38
    文章目录网络和共享中心网络和Internet更改适配器选项找到连上的wifi打开TCP/IPv4的属性使用下面的 DNS 服务器地址 最近总是 DNS 地址被改没了,可能是 VPN 的问题 记录一下手动配置 DNS 地址: 网络和共享中心 ...
  • 写在前面:现在是大三暑假了,正在复习以前的知识,准备面试,尝试自己...2.主机向本地DNS服务器(LDNS)发起递归查询,如果LDNS中有对应域名的ip地址缓存,LDNS把结果返回给主机,解析结束,否则继续下面 3.本地DNS
  • 全国DNS地址大全

    千次阅读 2011-06-24 23:44:00
    电信DNS:北京DNS地址:202.96.199.133202.96.0.133202.106.0.20202.106.148.1202.97.16.195上海DNS地址:202.96.199.132202.96.199.133202.96.209.5202.96.209.6202.96.209.133天津
  • 设置DNS地址解析

    2018-10-25 13:12:53
    在虚拟机通过主机ping百度的时,虚拟机ping 百度时,必须ping百度... DNS(域名系统):万维网上作为域名和IP地址相互映射的一个分布式数据库, 能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的I...
  • DNS获取dns-prefetch)

    千次阅读 2013-07-12 10:12:37
    DNS获取dns-prefetch) 发表回复 今天翻看twitter的源码的时候看到了一下内容: 查阅了相关资料,知道DNS Prefetch也就是DNS获取,也是前段优化的一部分。在前段优化中关于DNS的有两点:...
  • 通过shell命令设置(获取)IP、网关、dns信息,需要获取root权限 查看所有网络信息 C:\>adb shell root@android:/ # netcfg netcfg ip6tnl0 DOWN 0.0.0.0/0 0x00000080 00:00:00: 00:00:00 gre0 DOWN
  • IP地址、子网掩码、网关及DNS地址

    千次阅读 2017-08-20 14:32:03
    ip:互联网上联接了无数的服务和电脑,每一个主机都有惟一的地址,作为该主机在Internet上的唯一标志,即IP地址(Internet Protocol ...  DNS(Domain Name System)域名服务器系统将形象的文字型域名翻译成对应的数
  • 开始-->运行-->cmd ...DNS服务器地址是指的是DNS server 如果在使用路由器上网的时候与别人的Ip地址相同,可以考虑用这种方法修改一下,只要网段相同即可。 看看能不能解决IP冲突的问题。
  • 背景最近在准备NB-IoT相关的一个毕设,用到了BC95模块,使用的是BC-95的B5版本(也就是电信专用)。...由于NB-IoT现阶段访问一个服务器只能通过IP地址加端口的方式,省去了DNS解析,如果产品以后的IP变化

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 143,068
精华内容 57,227
关键字:

如何获取dns地址