2019独角兽企业重金招聘Python工程师标准>>>

模拟dns优选,处理dns的响应时间

说明

主要用于选择更合适的dns解析服务器。可以自定义配置需要测试的dns地址。 如果你们的宽带是电信联通或移动可以去查询它们所在城市的dns地址也可以加入测试

配置文件 dnstest.ini

#要进行解析的域名
test www.baidu.com
test www.oschina.com
test tv.sohu.com#可用的dns。
dns 8.8.8.8
dns 8.8.4.4
dns 114.114.114.114
dns 114.114.115.115
dns 223.5.5.5
dns 223.6.6.6
dns 1.2.4.8
dns 210.2.4.8
dns 208.67.222.222
dns 208.67.220.220
dns 101.226.4.6
dns 123.125.82.6
dns 123.125.83.6

代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class DNSSpeed implements Runnable {private final InetAddress dns;private final String dd;public DNSSpeed(String dns, String dd) throws UnknownHostException {this.dns = InetAddress.getByName(dns);this.dd = dd;}public void run() {byte[] data = toDnsBytes(dd);DatagramSocket dispatcher = null;DatagramPacket pack = null;boolean isSuccess = false;long start = System.currentTimeMillis();try {pack = new DatagramPacket(data, data.length, dns, 53);dispatcher = createDatagramSocket();dispatcher.setSoTimeout(1000);dispatcher.send(pack);data = new byte[512];pack = new DatagramPacket(data, data.length);dispatcher.receive(pack);if (pack.getLength() > 12) {//简单验证返回包isSuccess = true;}} catch (Exception e) {} finally {if (null != dispatcher) {dispatcher.close();}String info = "%-15s\t%-20s\t%s\t%4d\t";info = String.format(info, dns.getHostAddress(), dd, isSuccess, (System.currentTimeMillis() - start));System.out.println(info);}}/*** 组dns查询包* 2015年7月14日* @param dd* @return*/protected static final byte[] toDnsBytes(String dd) {ByteBuffer b = ByteBuffer.allocateDirect(512);short id = (short) (3 + r.nextInt(1000));b.putShort(id);// id;b.put((byte) 0x01);b.put((byte) 0x00);b.putShort((short) (0x01 & 0xFFFF));b.putShort((short) (0x00 & 0xFFFF));b.putShort((short) (0x00 & 0xFFFF));b.putShort((short) (0x00 & 0xFFFF));String[] ss = dd.split("\\.");for (int i = 0; i < ss.length; i++) {byte[] bb = ss[i].getBytes();b.put((byte) (bb.length & 0xFF));b.put(bb);}b.put((byte) 0x00);b.putShort((short) 0x01);b.putShort((short) 0x01);b.flip();byte[] bb = new byte[b.remaining()];b.get(bb);return bb;}private static Random r = new Random();/*** 随机取一个 50000开始的端口* 2015年7月14日* @return*/private static synchronized DatagramSocket createDatagramSocket() {DatagramSocket result = null;while (null == result) {try {int port = 50000 + r.nextInt(10000);result = new DatagramSocket(port);} catch (SocketException e) {result = null;} finally {}}return result;}public static void main(String[] args) throws UnknownHostException {List<String> config = loadFile("dnstest.ini");List<String> dns = getConfig(config, "dns");List<String> test = getConfig(config, "test");for (String s : dns) {for (String t : test) {new DNSSpeed(s, t).run();}}}/*** 取key. 配置以 key  value格式* 2015年7月14日* @param config* @param key* @return*/protected static final List<String> getConfig(List<String> config, String key) {List<String> result = new ArrayList<String>();for (String ss : config) {ss = ss.trim();if (ss.startsWith(key)) {result.add(ss.substring(key.length()).trim());}}return result;}/*** 加载配置文件转list* 2015年7月14日* @param path* @return*/protected static final List<String> loadFile(String path) {List<String> result = new ArrayList<String>();BufferedReader in = null;try {in = new BufferedReader(new FileReader(path));String s = null;while (null != (s = in.readLine())) {s = s.trim();if (!s.startsWith("#") && !s.isEmpty()) {//过滤掉空行及#号开头的配置result.add(s);}}} catch (Exception e) {e.printStackTrace();} finally {if (null != in) {try {in.close();} catch (IOException e) {}}}return result;}
}

执行结果

8.8.8.8         www.baidu.com           true      12
8.8.8.8         www.oschina.com         true       4
8.8.8.8         tv.sohu.com             true       7
8.8.4.4         www.baidu.com           true       7
8.8.4.4         www.oschina.com         true       8
8.8.4.4         tv.sohu.com             true       6
114.114.114.114 www.baidu.com           true       5
114.114.114.114 www.oschina.com         true       6
114.114.114.114 tv.sohu.com             true       8
114.114.115.115 www.baidu.com           true       5
114.114.115.115 www.oschina.com         true       6
114.114.115.115 tv.sohu.com             true       5
223.5.5.5       www.baidu.com           true      41
223.5.5.5       www.oschina.com         true      44
223.5.5.5       tv.sohu.com             true      42
223.6.6.6       www.baidu.com           true      40
223.6.6.6       www.oschina.com         true      45
223.6.6.6       tv.sohu.com             true      46
1.2.4.8         www.baidu.com           true       8
1.2.4.8         www.oschina.com         true       6
1.2.4.8         tv.sohu.com             true      13
210.2.4.8       www.baidu.com           true       6
210.2.4.8       www.oschina.com         true       8
210.2.4.8       tv.sohu.com             true     187
208.67.222.222  www.baidu.com           true       5
208.67.222.222  www.oschina.com         true       6
208.67.222.222  tv.sohu.com             true       4
208.67.220.220  www.baidu.com           true       5
208.67.220.220  www.oschina.com         true       7
208.67.220.220  tv.sohu.com             true      10
101.226.4.6     www.baidu.com           true       5
101.226.4.6     www.oschina.com         true       5
101.226.4.6     tv.sohu.com             true       6
123.125.82.6    www.baidu.com           true       5
123.125.82.6    www.oschina.com         true       7
123.125.82.6    tv.sohu.com             true       5
123.125.83.6    www.baidu.com           true       5
123.125.83.6    www.oschina.com         true       5
123.125.83.6    tv.sohu.com             true       6

转载于:https://my.oschina.net/u/727875/blog/1826091

模拟dns优选,处理dns的响应时间相关推荐

  1. win10如何解决浏览器出现“正在解析主机”的问题,很大原因是虚拟机,虚拟网卡,小米随身wifi导致的,DNS优选下载,

    如何解决浏览器出现"正在解析主机"的问题 ,很大原因虚拟机,虚拟网卡,小米随身wifi导致的 =========================================== ...

  2. 【Windows】DNS优选(挑选最合适的DNS服务器)

    引言 笔者在之前的文章详解DNS服务.DNS解析.DNS劫持和污染中已经详细介绍过 DNS 了,今天给大家带来一款免费的 DNS 优选工具(仅适用 Windows),帮助大家提高上网速度,拒绝 DNS ...

  3. linux+dns的acl,DNS服务器之三:DNS高级用法(DNS转发、ACL、智能DNS及日志系统) | 旺旺知识库...

    前面两篇DNS文件讲解了基本的安装配置和主从复制: 本文将深入讲解DNS服务器bind98的高级用法,主要包括: DNS转发配置 ACL应用与配置 使用bind实现智能DNS BIND日志系统介绍 一 ...

  4. 什么是DNS劫持和DNS污染?

    说明 我们知道,某些网络运营商为了某些目的,对 DNS 进行了某些操作,导致使用 ISP 的正常上网设置无法通过域名取得正确的 IP 地址.常用的手段有:DNS劫持 和 DNS污染.DNS劫持 和 D ...

  5. 防火墙DNS域名解析启用DNS透明代理

    拓扑介绍 LSW2.LSW3为公司A / B 部门的接入交换机 LSW1为公司的核心设备,负责DHCP地址下放 FW1为公司出接口设备,负责对接telecom Unicom和给公司做域名解析 AR1. ...

  6. Linux在shell终端中清空DNS缓存,刷新DNS的方法(ubuntu,debian)

    前言 在Linux系统里查询DNS使用如下命令 dig baidu.com @114.114.114.114 或者使用系统默认的DNS服务器查询 nslookup baidu.com 下文中的方法不一 ...

  7. DNS重绑定DNS Rebinding攻击

    DNS重绑定DNS Rebinding攻击 在网页浏览过程中,用户在地址栏中输入包含域名的网址.浏览器通过DNS服务器将域名解析为IP地址,然后向对应的IP地址请求资源,最后展现给用户.而对于域名所有 ...

  8. php dns刷新,Windows DNS缓存自动刷新

    Windows DNS缓存自动刷新 admin • 2018 年 09 月 04 日 DNS(域名服务器) DNS(Domain Name Server)是进行域名和与之相对应的ip地址转换的服务器. ...

  9. 微软DNS服务器默认,DNS 服务器成为一座岛 - Windows Server | Microsoft Docs

    当域控制器指向 DNS 服务器自身时,DNS 服务器将成为一座_msdcs.ForestDnsName 域 10/19/2020 本文内容 本文提供了一种解决方案,解决当域控制器指向 DNS 服务器自 ...

最新文章

  1. [练习]利用CSS steps 实现逐帧动画
  2. Atitit. 订单管理 收银单持久化 功能设计  基于ecshop订单结构
  3. Struts1.x的使用
  4. 禁止复制的网页怎么复制
  5. 洛谷P3195 [HNOI2008]玩具装箱TOY
  6. 拆解Mate 30 Pro,内部双重散热、铜管一体紫色防滚架,太酷了!
  7. 个性化推荐系统原理介绍(基于内容推荐/协同过滤/关联规则/序列模式/基于社交推荐)...
  8. 下载人脸认证助手_关于微信人脸解封验证失败方法
  9. 搜索宝典:搜索资料的三重境界【帮助高级篇】
  10. react-native 适配问题
  11. xbox 360手柄驱动程序_魔派PRO手柄常见问题解决方法一览
  12. 2019 中兴秋招笔试题1
  13. 微信的API到底是什么?
  14. Java 特殊操作流之标准输出流(system.out.println的底层原理)
  15. 【HDU】1859 最小长方形
  16. pm2 : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\pm2.ps1,因为在此系统上禁止运行脚本
  17. html5 2种布局模式
  18. pdf转换成excel,pdf转excel方法
  19. Android模仿手机京东商城实训小项目(含源码)
  20. Bootstrap V3.3.4 组件

热门文章

  1. TP Link WN726N ubuntu18安装成功
  2. 2008 go server sql 批处理_SQL Server 让你的数据来去自如——批处理-阿里云开发者社区...
  3. 经典中国黑客站点推荐
  4. K8s (Kubernetes简介、特性、架构)
  5. 使用three.js模拟地球效果
  6. 地址转化net配置(公司网络通外网实验)(图文讲解)
  7. ADAS测试设备—惯性导航系统简介
  8. 【PV操作】南航重点:过独木桥
  9. 电脑公司纯净版GHOST_XP_SP3_V12
  10. 高通MSM8974芯片参考资料免费下载