我有以下代码:为什么java的给不同的DNS结果与IPv4Stack
import java.net.InetAddress;
public class lookup {
public static void main(String[] args) throws Exception {
for(String host : args){
for(InetAddress addr : InetAddress.getAllByName(host)){
System.out.println(addr.getHostAddress());
}
}
}
}
我们最近改变了对CNAME我们会打电话给主机foo.example.com从bar.example.com指向指向baz.example.com。如果我运行:
java -Djava.net.preferIPv4Stack=true lookup foo.example.com
我得到baz.example.com的IP地址,如预期的那样。但是,如果我运行:
java lookup foo.example.com
我仍然得到bar.example.com的IP地址。
我确认bar.example.com和baz.example.com都没有AAAA记录。 和ping
都按预期方式解析baz.example.com。我如何获得java的ipv6堆栈来正确解决这个问题?
更新:在切换回DNS后,我发现IPv4栈仍然解析为baz.example.com,IPv6栈解析bar.example.com,所以这似乎是某种缓存问题。 – Stuart 2010-02-18 19:29:51