ExtendedResolver是dnsjava中的另一个DNS解析器实现,它可以同时向多个DNS服务器发送查询请求,并接收响应消息。下面是ExtendedResolver的java代码实现过程:
1. 创建一个ExtendedResolver对象,并设置多个DNS服务器的地址和端口号。
```
List servers = new ArrayList<>();
servers.add(InetAddress.getByName("8.8.8.8"));
servers.add(InetAddress.getByName("8.8.4.4"));
ExtendedResolver resolver = new ExtendedResolver(servers.toArray(new InetAddress[servers.size()]));
resolver.setPort(53);
```
2. 创建一个Lookup对象,并设置查询类型和查询域名。
```
Lookup lookup = new Lookup("www.example.com", Type.A);
lookup.setResolver(resolver);
```
3. 发送DNS查询请求消息,并获取查询结果。
```
Record[] records = lookup.run();
if (lookup.getResult() == Lookup.SUCCESSFUL) {
for (Record record : records) {
if (record instanceof ARecord) {
InetAddress address = ((ARecord) record).getAddress();
// 处理A记录
} else if (record instanceof MXRecord) {
int priority = ((MXRecord) record).getPriority();
Name target = ((MXRecord) record).getTarget();
// 处理MX记录
}
// 其他类型的记录
}
} else {
// 查询失败
}
```
4. 可以通过ExtendedResolver类的方法addResolver()和removeResolver()来动态添加或删除DNS服务器。
```
resolver.addResolver(InetAddress.getByName("114.114.114.114"));
resolver.removeResolver(InetAddress.getByName("8.8.4.4"));
```
总之,ExtendedResolver是dnsjava中的另一个DNS解析器实现,它可以同时向多个DNS服务器发送查询请求,并接收响应消息。我们可以通过ExtendedResolver类来实现DNS解析器,并且可以通过Lookup类来发送DNS查询请求并获取查询结果,同时也可以通过ExtendedResolver类的方法addResolver()和removeResolver()来动态添加或删除DNS服务器。