下面列出了怎么用org.xbill.DNS.AAAARecord的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
public void testQueryAddressesIpv6() throws SendException {
new Expectations() {
{
lookup.run();
result =
new Record[] { new AAAARecord(HOST6_EXAMPLE_COM_NAME,
0, 0, IPV6)
};
}
};
InetAddress[] addresses =
addressLookup.queryAddresses(HOST1_EXAMPLE_COM_NAME);
InetAddress[] expected = new InetAddress[] { IPV6 };
assertArrayEquals(expected, addresses);
}
public static List<ForwardLookupResult> getAAAARecord(String hostName, String domainName) throws TextParseException {
List<ForwardLookupResult> entries = null;
if (hostName != null && !hostName.isEmpty() && domainName != null && !domainName.isEmpty()) {
Record[] recs = new Lookup(hostName, Type.AAAA).run();
if (recs != null) {
if (recs.length > 0) {
entries = new ArrayList<>();
for (Record record : recs) {
ForwardLookupResult foundSubDomain = new ForwardLookupResult(domainName);
foundSubDomain.setHostName(hostName);
String ipAddress = ((AAAARecord) record).getAddress().getHostAddress();
foundSubDomain.setIpAddress(ipAddress);
foundSubDomain.setLookupType("A");
entries.add(foundSubDomain);
}
}
}
}
return entries;
}
public static String resolve(String host, int addrType) {
try {
Lookup lookup = new Lookup(host, addrType);
SimpleResolver resolver = new SimpleResolver("114.114.114.114");
resolver.setTimeout(5);
lookup.setResolver(resolver);
Record[] result = lookup.run();
if (result == null || result.length == 0) {
return null;
}
List<Record> records = new ArrayList<>(Arrays.asList(result));
Collections.shuffle(records);
for (Record r : records) {
switch (addrType) {
case Type.A:
return ((ARecord) r).getAddress().getHostAddress();
case Type.AAAA:
return ((AAAARecord) r).getAddress().getHostAddress();
default:
break;
}
}
} catch (Exception e) {
VayLog.e(TAG, "resolve", e);
app.track(e);
}
return null;
}
public static String resolve(String host, int addrType) {
try {
Lookup lookup = new Lookup(host, addrType);
SimpleResolver resolver = new SimpleResolver("114.114.114.114");
resolver.setTimeout(5);
lookup.setResolver(resolver);
Record[] result = lookup.run();
if (result == null || result.length == 0) {
return null;
}
List<Record> records = new ArrayList<>(Arrays.asList(result));
Collections.shuffle(records);
for (Record r : records) {
switch (addrType) {
case Type.A:
return ((ARecord) r).getAddress().getHostAddress();
case Type.AAAA:
return ((AAAARecord) r).getAddress().getHostAddress();
default:
break;
}
}
} catch (Exception e) {
VayLog.e(TAG, "resolve", e);
ShadowsocksApplication.app.track(e);
}
return null;
}
private RRset makeV6AddressSet(HostResource host) {
RRset addressSet = new RRset();
for (InetAddress address : host.getInetAddresses()) {
if (address instanceof Inet6Address) {
AAAARecord record =
new AAAARecord(
toAbsoluteName(host.getHostName()),
DClass.IN,
dnsDefaultATtl.getStandardSeconds(),
address);
addressSet.addRR(record);
}
}
return addressSet;
}
private InetAddress[] convertAddressRecordsToAddresses(Record[] records) {
InetAddress[] addresses = new InetAddress[records.length];
for (int i = 0; i < records.length; i++) {
Record record = records[i];
if (record instanceof ARecord) {
addresses[i] = ((ARecord) record).getAddress();
} else if (record instanceof AAAARecord) {
addresses[i] = ((AAAARecord) record).getAddress();
} else {
throw new RuntimeException();
}
}
return addresses;
}