在了解DNS解析时,缓存方面,再具体到java上,于是记录下InetAddress
java的JVM会缓存DNS的解析结果,这个缓存在InetAddress类里完成,InetAddress一旦得到一个给定主机的地址,就会缓存起来,即使重新定义一个InetAddress类,也不会重新再获取一次,而是直接从缓存中获取。并且有两种缓存策略,一种是:正确的解析结果缓存,另一种是:失败的解析结果缓存。分别由java.security文件的networkaddress.cache.ttl和networkaddress.cache.negative.ttl完成,默认值为-1(永久),10(缓存10秒)
注:如果用InetAddress解析域名,请使用单利模式,不然每次都要创建新的实例(对象),非常消耗性能
InetAddres:
package haizhu.com.InetDemo;
import java.net.InetAddress;
public class InetAddressDemo {
public static void main(String[] args) throws Exception{
InetAddress locAdd = null;
InetAddress remAdd = null;
locAdd = InetAddress.getLocalHost(); //得到本地InetAddress对象
remAdd = InetAddress.getByName("www.baidu.com"); //取得远程InetAddress对象
System.out.println("本机IP地址:"+locAdd.getHostAddress()); //得到本地IP地址
System.out.println("百度IP地址:"+remAdd.getHostAddress()); //得到百度IP地址
System.out.println("本机是否可达:"+locAdd.isReachable(5000));
}
}
本机IP地址:192.168.1.109
百度IP地址:115.239.210.26
本机是否可达:true