public class ResolverApi extends Object
A simple exammple how to resolve the IPv4 address of a given domain:
ResolverResult<A> result = DnssecResolverApi.INSTANCE.resolve("verteiltesysteme.net", A.class);
if (!result.wasSuccessful()) {
RESPONSE_CODE responseCode = result.getResponseCode();
// Perform error handling.
…
return;
}
if (!result.isAuthenticData()) {
// Response was not secured with DNSSEC.
…
return;
}
Set<A> answers = result.getAnswers();
for (A a : answers) {
InetAddress inetAddress = a.getInetAddress();
// Do someting with the InetAddress, e.g. connect to.
…
}
MiniDNS also supports SRV resource records as first class citizens:
SrvResolverResult result = DnssecResolverApi.INSTANCE.resolveSrv(SrvType.xmpp_client, "example.org")
if (!result.wasSuccessful()) {
RESPONSE_CODE responseCode = result.getResponseCode();
// Perform error handling.
…
return;
}
if (!result.isAuthenticData()) {
// Response was not secured with DNSSEC.
…
return;
}
List<ResolvedSrvRecord> srvRecords = result.getSortedSrvResolvedAddresses();
// Loop over the domain names pointed by the SRV RR. MiniDNS will return the list
// correctly sorted by the priority and weight of the related SRV RR.
for (ResolvedSrvRecord srvRecord : srvRecord) {
// Loop over the Internet Address RRs resolved for the SRV RR. The order of
// the list depends on the prefered IP version setting of MiniDNS.
for (InternetAddressRR inetAddressRR : srvRecord.addresses) {
InetAddress inetAddress = inetAddressRR.getInetAddress();
int port = srvAddresses.port;
// Try to connect to inetAddress at port.
…
}
}
Modifier and Type | Field and Description |
---|---|
static ResolverApi |
INSTANCE |
Constructor and Description |
---|
ResolverApi(AbstractDnsClient dnsClient) |
public static final ResolverApi INSTANCE
public ResolverApi(AbstractDnsClient dnsClient)
public final <D extends Data> ResolverResult<D> resolve(String name, Class<D> type) throws IOException
IOException
public final <D extends Data> ResolverResult<D> resolve(DnsName name, Class<D> type) throws IOException
IOException
public <D extends Data> ResolverResult<D> resolve(Question question) throws IOException
IOException
public SrvResolverResult resolveSrv(SrvType type, String serviceName) throws IOException
IOException
public SrvResolverResult resolveSrv(SrvType type, DnsName serviceName) throws IOException
IOException
public SrvResolverResult resolveSrv(SrvService service, SrvProto proto, String name) throws IOException
IOException
public SrvResolverResult resolveSrv(SrvService service, SrvProto proto, DnsName name) throws IOException
IOException
public SrvResolverResult resolveSrv(DnsName service, DnsName proto, DnsName name) throws IOException
IOException
public SrvResolverResult resolveSrv(String name) throws IOException
IOException
public ResolverResult<PTR> reverseLookup(CharSequence inetAddressCs) throws IOException
IOException
public ResolverResult<PTR> reverseLookup(InetAddress inetAddress) throws IOException
IOException
public ResolverResult<PTR> reverseLookup(Inet4Address inet4Address) throws IOException
IOException
public ResolverResult<PTR> reverseLookup(Inet6Address inet6Address) throws IOException
IOException
public SrvResolverResult resolveSrv(DnsName name) throws IOException
SRV
resource record for the given name. After ensuring that the resolution was successful
with ResolverResult.wasSuccessful()
, and, if DNSSEC was used, that the results could be verified with
ResolverResult.isAuthenticData()
, simply use SrvResolverResult.getSortedSrvResolvedAddresses()
to
retrieve the resolved IP addresses.
The name of SRV records is "_[service]._[protocol].[serviceDomain]", for example "_xmpp-client._tcp.example.org".
name
- the name to resolve.SrvResolverResult
instance which can be used to retrieve the addresses.IOException
- if an IO exception occurs.public final AbstractDnsClient getClient()