Created
August 22, 2017 05:53
-
-
Save etiennecarriere/cec6b37dec05a1b5301d59ec190c456a to your computer and use it in GitHub Desktop.
Usage of Listener on DNSResolver
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.net.InetSocketAddress; | |
import io.netty.channel.AddressedEnvelope; | |
import io.netty.handler.codec.dns.DnsRecord; | |
import io.netty.handler.codec.dns.DnsResponse; | |
import io.netty.handler.codec.dns.DnsSection; | |
import io.netty.util.concurrent.DefaultPromise; | |
import io.netty.util.concurrent.Future; | |
import io.netty.util.concurrent.GenericFutureListener; | |
public class DnsPromise extends DefaultPromise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>>{ | |
public DnsPromise() { | |
addListener(new DnsListener()); | |
} | |
public class DnsListener implements GenericFutureListener<Future <AddressedEnvelope<? extends DnsResponse,InetSocketAddress>>>{ | |
@Override | |
public void operationComplete(Future<AddressedEnvelope<? extends DnsResponse, InetSocketAddress>> future) | |
throws Exception { | |
DnsResponse response = future.getNow().content(); | |
DnsRecord answer = response.recordAt(DnsSection.ANSWER); | |
if (answer != null) { | |
System.out.println("POSITIVE ANSWER "+ answer.name()+ " TTL "+ answer.timeToLive()); | |
}else { | |
DnsRecord authoritity = response.recordAt(DnsSection.AUTHORITY); | |
System.out.println("Negative ANSWER TTL" + authoritity.timeToLive()); | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.net.InetSocketAddress; | |
import java.util.concurrent.ExecutionException; | |
import io.netty.channel.AddressedEnvelope; | |
import io.netty.channel.EventLoopGroup; | |
import io.netty.channel.nio.NioEventLoopGroup; | |
import io.netty.channel.socket.nio.NioDatagramChannel; | |
import io.netty.handler.codec.dns.DefaultDnsQuestion; | |
import io.netty.handler.codec.dns.DnsQuestion; | |
import io.netty.handler.codec.dns.DnsRecordType; | |
import io.netty.handler.codec.dns.DnsResponse; | |
import io.netty.resolver.dns.DnsNameResolver; | |
import io.netty.resolver.dns.DnsNameResolverBuilder; | |
import io.netty.resolver.dns.SingletonDnsServerAddressStreamProvider; | |
import io.netty.util.concurrent.Future; | |
public class MainClass { | |
public static void main(String[] args) throws InterruptedException, ExecutionException { | |
EventLoopGroup group = new NioEventLoopGroup(1); | |
//DnsNameResolver dnsNameResolver = new DnsNameResolver(group.next(),NioDatagramChannel.class,DnsServerAddresses.shuffled(SERVERS)); | |
DnsNameResolver dnsNameResolver = new DnsNameResolverBuilder(group.next()) | |
.channelType(NioDatagramChannel.class) | |
.nameServerProvider(new SingletonDnsServerAddressStreamProvider(new InetSocketAddress("127.0.0.1", 53))) | |
.build(); | |
int i = 154; | |
int j = 6; | |
String query = j+ "." + i + "." + "228.160.in-addr.arpa"; | |
DnsQuestion dnsQuestion = new DefaultDnsQuestion(query, DnsRecordType.PTR); | |
Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> futureResponse = dnsNameResolver.query(dnsQuestion,new DnsPromise()); | |
System.out.println("apres"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment