Interroger un serveur DNS
La commande nslookup sous Windows et dig sous UNIX interroge un serveur DNS (Domain Name System). Dans l'exemple, la class NSLookup utilise la fonction InetAddress.getByName pour afficher :- l'IP d'un serveur web à partir de son nom de domaine,
- l'IP du poste 'leserveur' sur un réseau local à partir de son alias.
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Trouver l'adresse IP à partir d'un domaine ou d'un nom de poste
*/
class NSLookup {
public static String IPAddress(String hostname) {
InetAddress inetHost = null;
try {
inetHost = InetAddress.getByName(hostname);
} catch (UnknownHostException ex) {
Logger.getLogger(NSLookup.class.getName()).log(Level.SEVERE, null, ex);
}
if (inetHost == null) {
return "Invalid hostname: "+hostname;
} else {
return inetHost.getHostAddress();
}
}
/**
* Exemple
*/
public static void main(String[] args) {
//Trouver l'IP du serveur web google.com
System.out.println("IP du serveur 'www.google.com': " + NSLookup.IPAddress("google.com"));
//Connaitre l'IP du poste 'leserveur' sur un réseau local
System.out.println("IP du poste 'leserveur' sur le LAN: " + NSLookup.IPAddress("leserveur"));
}
}
Résultats de la résolution DNS
L'execution du code JAVA ci-dessous produit le résultat suivant:IP du serveur 'www.google.com': 173.194.45.67
IP du poste 'leserveur' sur le LAN: 192.168.2.150
IP du poste 'leserveur' sur le LAN: 192.168.2.150
A partir des adresses ip retournées par le serveur DNS, il est possible de lancer des tests par exemple avec un ping ou démarrarer une communication avec un serveur avec un socket.