依赖包:

<dependency><groupId>dnsjava</groupId><artifactId>dnsjava</artifactId><version>2.1.8</version>
</dependency>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xbill.DNS.*;import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import java.util.*;/*** @author xxy*/
public class DnsUtils {private static final Logger log = LoggerFactory.getLogger(DnsUtils.class);public static void main(String[] args) {String[] ipArray = {"156.238.169.163"};List<String> list = Arrays.asList(ipArray);Set<String> set = getDnsRealIp(list,"fig.cdn.com");Iterator<String> it = set.iterator();while(it.hasNext()) {System.out.println(it.next());}}/*** 获取DNS服务器信息(不推荐)** @param domain  要获取DNS信息的域名* @param provider      DNS服务器* @param types   信息类型 "A"(IP信息),"MX"* @param timeout 请求超时* @param retryCount    重试次数** @return 所有信息组成的数组** @throws NamingException**/@SuppressWarnings("rawtypes" )public static ArrayList<String> getDNSRecs(String domain, String provider,String [] types, int timeout, int retryCount) throws NamingException {ArrayList<String> results = new ArrayList<String>(15);Hashtable<String, String> env = new Hashtable<String, String>();env.put( "java.naming.factory.initial" ,"com.sun.jndi.dns.DnsContextFactory" );//设置域名服务器env.put(Context. PROVIDER_URL, "dns://" + provider);// 连接时间env.put( "com.sun.jndi.dns.timeout.initial" , String.valueOf(timeout));// 连接次数env.put( "com.sun.jndi.dns.timeout.retries" , String.valueOf(retryCount));DirContext ictx = new InitialDirContext(env);Attributes attrs = ictx.getAttributes(domain, types);for (Enumeration e = attrs.getAll(); e.hasMoreElements();) {Attribute a = (Attribute) e.nextElement();int size = a.size();for (int i = 0; i < size; i++) {results.add((String) a.get(i));}}return results;}/*** 获取域名所有IP(不推荐)* @param domain  域名* @param dnsServers    DNS服务器列表* @param timeout 请求超时* @param retryCount    重试次数* @return*/public static Set<String> getAllIP(String domain, String[] dnsServers,int timeout, int retryCount) {Set<String> ips = new HashSet<String>();for(String dnsServer: dnsServers) {List<String> ipList;try {ipList = getDNSRecs(domain, dnsServer, new String[]{"A"},timeout, retryCount);} catch (NamingException e) {continue;}ips.addAll(ipList);}return ips;}/*** 获取域名所有IP(推荐,支持高频次调用)* @param ipList dns所在服务器IP* @param dnsServerName dns服务域名* @return*/public static Set<String> getDnsRealIp(List<String> ipList,String dnsServerName){Set<String> set = new HashSet<>();try {log.info("getDnsRealIp ipList==========>{}",ipList);for(String ip : ipList) {Resolver resolver = new SimpleResolver(ip);Lookup lookup = new Lookup(dnsServerName, Type.A);lookup.setResolver(resolver);Cache cache = new Cache();lookup.setCache(cache);lookup.run();if (lookup.getResult() == Lookup.SUCCESSFUL) {Record[] records = lookup.getAnswers();for (Record record : records) {log.info("getDnsRealIp  ip->{}, dsn-->{}",ip,record.toString());set.add(record.rdataToString());}}}}catch (Exception e){log.info("getDnsRealIp error=====>",e);}return set;}
}

java DNS域名解析相关推荐

  1. java dns 解析域名解析_java网络学习 java dns 域名解析协议实现

    1 域名解析,将域名可转换为ip地址 InetAddress也可以通过使用getAddress()来获得IP地址,但是它的返回值是一个4个字节的数组. 因此尽管getAddress()在获得IP方面是 ...

  2. 深入分析Java Web技术内幕读书笔记(二)浅析DNS域名解析过程

    上一篇文章<浅析Web请求过程>讲述的是如何发起HTTP请求,对于请求发起过程中很重要的一个步骤--DNS解析过程的描述是一带而过,本篇文章将跟着DNS解析过程来分析域名是如何解析的. 一 ...

  3. java将域名解析为IP地址,获取网卡的配置信息

    DNS域名解析系统 系统简介:用户通过输入需要查询的域名,便可输出域名对应的一个IP地址或多个IP地址. 系统功能:1.通过输入域名可以查询域名所对应的IP地址. 2.可以获取当地的主机IP地址和本地 ...

  4. 2022/1/30 北京 DNS 域名解析、IP地址 、CDN 分布式缓存服务器、局域网LAN和路由转发

    请求包路由 当我们使用域名访问某一个网站时,实际上就是将请求包(以Http请求为例)通过网络传输给某台服务器,比如访问"www.baidu.com"时: DNS域名解析拿到IP地址 ...

  5. C++如何实现DNS域名解析转

    C++如何实现DNS域名解析 这片文章介绍了C++如何实现DNS域名解析,还有对相关技术的介绍,代码很详细,需要的朋友可以参考下 一.概述 现在来搞定DNS域名解析,其实这是前面一篇文章C++实现Pi ...

  6. Linux系统安装DNS域名解析服务

    在linux系统下安装DNS域名解析服务 步骤如下: 1>查看挂在镜像位置 2>查看光盘是否挂载 3>查看需要挂在的位置 4>进行挂载 [root@localhost mnt] ...

  7. golang实现dns域名解析(一)

    本文将详细讲解如何用go语言一步一步实现dns域名解析的过程,并简单介绍点dns有关的知识,直接开始正题吧. 首先我们要了解dns解析的过程,没有了解的请看这里DNS入门(转)很详细.扫盲结束后,我们 ...

  8. 搭建DNS域名解析服务器和本地配置HOST文件有什么区别?

    1.DNS服务器可以供其他人一起使用,hosts 文件只能是一个人用.这样修改个记录还得每个人都改一次 hosts, 而 dns 只需要改一次,大家都生效. 2.hosts速度快,不依赖网络,不用担心 ...

  9. 【鬼网络】之DNS域名解析服务

    序言 域名解析 序言 一.BIND域名服务基础 1.DNS系统的作用及类型 2.DNS系统类型 BIND的安装和配置文件 使用BIND构建域名服务器 构建缓存域名服务器 构建主.从域名服务器 总结 一 ...

  10. DNS域名解析服务(正向解析、反向解析、主从服务器)

    介 绍 Internet发展至今,在网的服务器和个人主机数量庞大,每个用户通过记忆IP地址访问网络资源并不现实了. 目前大家访问互联网进行上网浏览信息时,正常是通过域名进行访问(例如:www.baid ...

最新文章

  1. 记一次 调节有音量界面 上移的bug
  2. OD命令大全(OllyDbg命令)
  3. [iOS]关于零基础学习iOS开发的学习方法总结
  4. 三伏天到了,记得为数据中心降降温
  5. Fireworks(2020 ICPC南京)
  6. 产品认知:你的产品适不适合快速去迭代?
  7. 计算机网络实验五静态路由与RIP协议,实验锐捷实训8-1--配置静态路由和rip协议...
  8. LVS负载均衡集群服务搭建详解(一)
  9. 1227: [SDOI2009]虔诚的墓主人
  10. 使用ANSYS进行对称边界的模态分析,制作【春节快乐】
  11. java四舍五入保留两位小数方法整理
  12. 加油站防火防爆及危险区域划分
  13. 关于如何在mac系统上安装Git并在码市上建立项目
  14. 如何取消U盘上的设备加密功能Bitlocker——win10家庭版磁盘上有个锁的解决办法——详细操作版本
  15. 解决上传SFTPorg.apache.commons.net.MalformedServerReplyException: Could not parse respon
  16. 图像设定阈值二值matlab,“图像类型转换II——使用“导入、导出和转换”中的“阈值法”转换为二值图像”,MATLABImageProcessingToolbox,入门教程,七,之...
  17. 矩阵压缩降维动态规划递推【P1719 最大加权矩形】
  18. 【AHOI2009】【BZOJ1800】fly 飞行棋
  19. 国际化RFID射频常用协议标准
  20. 华为设备流量抑制及风暴控制配置命令

热门文章

  1. Android Studio个人使用记录
  2. P4839 P哥的桶 题解
  3. obs,直播文字画面模糊处理
  4. Ext4分区不能mound的问题修复
  5. 一个小把戏算法,获取大乐透,并且计算出最佳的结果(Qt C++ 和Android共用)
  6. oracle 会话数上不去_(一)UDS诊断服务中的诊断会话控制(DiagnosticSessionControl,0x10)...
  7. APP性能测试——启动时间
  8. 给不给你升职,领导关心的是什么?
  9. 3DLut表实现log视频的后期调色原理
  10. Android 购物选择颜色、尺码实现(二)