java DNS 缓存时间(成功时间和失败时间)代码

来源:互联网 发布:数据透视表 值 合计 编辑:程序博客网 时间:2024/06/06 15:33

java 中的DNS默认成功保存时间 30 s,失败时间 10s


import java.lang.reflect.Field;import java.net.InetAddress;import java.net.UnknownHostException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.Map;public class MyClass {public static void main(String[] args) throws Exception {Date d = new Date();    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    InetAddress.getByName("www.baidu.com");    try {        InetAddress.getByName("www.baiduxxx.com");    } catch (UnknownHostException e) {     }     System.out.println("current time:" + sdf.format(d));    String addressCache = "addressCache";    System.out.println(addressCache);    printDNSCache(addressCache);    String negativeCache = "negativeCache";    System.out.println(negativeCache);    printDNSCache(negativeCache);  }  private static void printDNSCache(String cacheName) throws Exception {    Class<InetAddress> klass = InetAddress.class;    Field acf = klass.getDeclaredField(cacheName);    acf.setAccessible(true);    Object addressCache = acf.get(null);    Class<?> cacheKlass = addressCache.getClass();//catchEntry    Field cf = cacheKlass.getDeclaredField("cache");    cf.setAccessible(true);//LinkedHashMap<String, CacheEntry>    Map<String, Object> cache = (Map<String, Object>) cf.get(addressCache);    for (Map.Entry<String, Object> hi : cache.entrySet()) {        Object cacheEntry = hi.getValue();        Class<?> cacheEntryKlass = cacheEntry.getClass();        Field expf = cacheEntryKlass.getDeclaredField("expiration");        expf.setAccessible(true);        long expires = (Long) expf.get(cacheEntry);         Field af = cacheEntryKlass.getDeclaredField("addresses");        af.setAccessible(true);        InetAddress[] addresses = (InetAddress[]) af.get(cacheEntry);        List<String> ads = new ArrayList<String>(addresses.length);        for (InetAddress address : addresses) {            ads.add(address.getHostAddress());        }         System.out.println(hi.getKey() + " "+new Date(expires) +" " +ads);    }}}


原创粉丝点击