Choose DNS server for resolving hostnames in Java

dns, java, resolve

Solution

If you use Sun Java, you can use this code:

//Override system DNS setting with Google free DNS server
System.setProperty("sun.net.spi.nameservice.nameservers", "8.8.8.8");
System.setProperty("sun.net.spi.nameservice.provider.1", "dns,sun");

See this blog post: How to set a custom DNS server with Java System properties for more details.

Problem

resolving a hostname to an IP address is rather easy in Java by using the InetAddress class like this: ``` InetAddress address = InetAddress.getByName("www.example.com"); ``` But this method uses the DNS server which is used by the running system. Is there any way to specify the DNS server that should be used for resolving?

Original source