java通过LookUp获取域名映射的所有ip地址列表

上篇文章通过Java自带的inetAddress类我们知道只能获取到单个ip地址,

这种方法是不适用与大多数情况的,因为大多数情况下我们的一个域名可能会映射到多个nginx主机ip

1.通过maven依赖jar包

<!--dns地址解析工具包-->
<dependency>
   <groupId>org.xbill</groupId>
   <artifactId>dnsjava</artifactId>
   <version>2.0.8</version>
</dependency>

如果只依赖了aliyun的中央仓库是没法直接下载成功的 因为该包的仓库位置并不在中央仓库中

针对这种情况需要我们下载源码然后将该jar发布到我们私有的中央仓库进行使用

可参考我的这篇文章https://mp.csdn.net/postedit/90721499 

将jar发布到公司私有的中央仓库中再进行依赖使用

 

2.jar包依赖成功后就可以使用下面的代码获取对应域名的ip列表


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Record;
import org.xbill.DNS.TextParseException;
import org.xbill.DNS.Type;

import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;


public class NXLookUP {
    private static final Logger logger = LoggerFactory.getLogger(NXLookUP.class);
    public static void main(String[] args) throws UnknownHostException, TextParseException {
        urlToIp("baidu.com");
    }

    /**
     * 通过域名获取远程地址ip集合
     * @param url
     * @return
     */
    public static List<String> urlToIp(String url) {
        ArrayList<String> ipList = new ArrayList<>();
        Lookup lookup ;
        try {
            lookup = new Lookup(url, Type.A);
            lookup.run();
            if (lookup.getResult() != Lookup.SUCCESSFUL) {
                logger.error("ERROR: " + lookup.getErrorString());
                return null;
            }
            Record[] answers = lookup.getAnswers();
            int i = 1;
            for (Record rec : answers) {
                logger.info("解析出ip地址{}>>>>>{}",i++,rec.rdataToString());
                ipList.add(rec.rdataToString());
            }
        } catch (TextParseException e) {
            e.printStackTrace();
        }
        return ipList;
    }

}

3.运行结果

如果有更好的方法,欢迎大家在留言区评论指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值