依赖包
在pom.xml文件添加dnsjava依赖
<dependency>
<groupId>dnsjava</groupId>
<artifactId>dnsjava</artifactId>
<version>2.1.8</version>
</dependency>
请求代码部分
import org.xbill.DNS.*;
import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
/**
* @author Created by mg1213 on 2019/3/27
* @email 244493422@qq.com
*/
public class Ends {
public static void main(String[] args) throws IOException {
long startTime, endTime;
String namesever = "202.108.22.220";
String clientIp = "113.123.136.145";
String domainName = "www.baidu.com.";
Name name = null;
Record rec;
Message query, response;
SimpleResolver res = null;
//是否指定dns服务器 没有指定使用localdns
if (namesever == null || "".equals(namesever.trim())) {
res = new SimpleResolver();
} else {
res = new SimpleResolver(namesever);
}
int type = Type.A, dclass = DClass.IN;
InetAddress address = InetAddress.getByName(clientIp);
name = Name.fromString(domainName, Name.root);
ClientSubnetOption clientSubnetOption = new ClientSubnetOption(32, address);
List ops = new ArrayList();
ops.add(clientSubnetOption);
rec = Record.newRecord(name, Type.A, dclass);
query = Message.newQuery(rec);
//开启EDNS 并且设置client ip
res.setEDNS(0, 0, ExtendedFlags.DO, ops);
startTime = System.currentTimeMillis();
response = res.send(query);
endTime = System.currentTimeMillis();
if (type == Type.AXFR) {
doAXFR(response, name);
} else {
doQuery(response, endTime - startTime);
}
}
static void doAXFR(Message response, Name name) throws IOException {
System.out.println("; java dig 0.0 <> " + name + " axfr");
if (response.isSigned()) {
System.out.print(";; TSIG ");
if (response.isVerified()) {
System.out.println("ok");
} else {
System.out.println("failed");
}
}
if (response.getRcode() != Rcode.NOERROR) {
System.out.println(response);
return;
}
Record[] records = response.getSectionArray(Section.ANSWER);
for (int i = 0; i < records.length; i++) {
System.out.println(records[i]);
}
System.out.print(";; done (");
System.out.print(response.getHeader().getCount(Section.ANSWER));
System.out.print(" records, ");
System.out.print(response.getHeader().getCount(Section.ADDITIONAL));
System.out.println(" additional)");
}
static void doQuery(Message response, long ms) throws IOException {
System.out.println("; java dig 0.0");
System.out.println(response);
System.out.println(";; Query time: " + ms + " ms");
}
}
网友评论