【发布时间】:2018-11-20 14:33:36
【问题描述】:
我正在使用 dnsjava 进行查询,程序确实查询了 2 次,第一次查询是必要的并返回所需的结果(此结果仅查看我是否捕获 UDP 包,而不是我的程序的结果),然后,它会自动执行第二次查询并为我的程序返回错误 Host Not Found tcpdump_picture
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
final Cache cache = new Cache(DClass.IN);
SimpleResolver resolver = new SimpleResolver("10.212.9.108");
Name name = new Name("8491698766.6.msisdn.sub.cs");
Lookup.setDefaultResolver(resolver);
Lookup.setDefaultCache(new Cache(), DClass.IN);
Lookup l = new Lookup(name);
l.setResolver(resolver);
l.run();
Record[] records = l.getAnswers();
System.out.println("Error str: " + l.getErrorString());
// System.out.println("Record length: " + records.length);
// InetAddress[] array = new InetAddress[records.length];
if(records != null) {
for(int i=0; i<records.length; i++) {
Record record = records[i];
if(record instanceof ARecord) {
ARecord a = (ARecord)record;
System.out.println("ARecord: " + a.getAddress().getHostName() + ";" + a.getAddress().getHostAddress());
}else {
CNAMERecord cname = (CNAMERecord)record;
System.out.println("CnameRecord: " + cname.toString());
}
}
}else {
System.out.println("Record null");
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
我刚刚通过更改 dnsjava 中 Cache 类的源代码解决了这个问题。在 Cache 类中,只需编辑此函数: public SetResponse addMessage(Message in) ,对此进行注释: if ((type == qtype || qtype == Type.ANY)) //&& // name.equals(curname))
标签: dnsjava