JDK 內建 InetAddress 支持基本 A/AAAA 記錄查詢:
InetAddress[] addresses = InetAddress.getAllByName("example.com");
for (InetAddress addr : addresses) {
System.out.println(addr.getHostAddress()); // IPv4/IPv6
}
需查詢 MX、NS、TXT、CNAME 等記錄類型,推薦使用 dnsjava 庫:
// Maven: dnsjava:dnsjava:2.1.9
Lookup lookup = new Lookup("example.com", Type.MX);
lookup.setResolver(new SimpleResolver("8.8.8.8")); // 指定 DNS 服務器
Record[] records = lookup.run();
for (Record rec : records) {
MXRecord mx = (MXRecord) rec;
System.out.println("郵件服務器: " + mx.getTarget() + " 優先級: " + mx.getPriority());
}
支持递归/迭代查詢、DNSSEC 驗證、區域傳輸 (AXFR)。高併發場景可使用異步 AsyncLookup 或連接池 ExtendedResolver。注意處理 TextParseException、UnknownHostException 等異常。