Méthode ordinaire de résolution de nom de domaine :
import java.net.*; public class Kkkk { public static void main(String args[]) throws Exception { InetAddress address = InetAddress.getByName("wxh-PC");// wxh-PC est le nom de mon ordinateur System out. .println(adresse); System.out.println("-----"); InetAddress adresse1 = InetAddress.getLocalHost(); System.out.println(address1); InetAddress[] adresses = InetAddress .getAllByName("www.baidu.com"); System.out.println(addresses.length); pour (InetAddress addr : adresses) { System.out. println(adresse); } } }Implémenter la résolution de nom de domaine avec une adresse IP d'hôte dynamique
Le but est d'utiliser un HÔTE DNS INTERNET pour diriger le nom de domaine vers l'hébergeur chez soi (personnel).
À l'heure actuelle, CABLEMODEM est très rapide et possède une IP dynamique, il est donc possible de résoudre des noms de domaine en machines personnelles.
Cela peut être fait avec des paramètres très simples.
Par exemple, si vous disposez d'un nom de domaine votredomaine.com, vous pouvez résoudre ce nom de domaine en n'importe quel hôte.
1. Le serveur (IP : AAAA) démarre un petit processus de résolution dynamique DNS.
Le fichier de nom de domaine de VeVB.COm est /var/named/VeVB.COm
Créez un autre /var/named/VeVB.COm.static (le fichier modèle peut être utilisé pour générer VeVB.COm)
(JDK1.3, Linux)
# Le code d'origine est le suivant : ThreadDNSReloadServer.java import java.io.*; import java.net.*; public class ThreadDNSReloadServer { public static void main(String[] args) { int i=1; new ServerSocket( 8189); for (;;) { Socket entrant =s.accept(); System.out.println("accepter un nouveau client : " + i); new ThreadDNSReloadHandle(incoming,i).start(); i++; } } catch (Exception e) { System.out.println(e); } } } class ThreadDNSReloadHandle extends Thread { public ThreadDNSReloadHandle(Socket i, int c) { incoming= i; counter=c; } public void run() { try { BufferedReader in=new BufferedReader(new InputStreamReader(incoming.getInputStream())); String User="Inconnu"; String DNSFILEPATH="/var/named/"; String DNSFILE="VeVB.COm"; USER_VALIDATED=true ; boolean done=false; while ( !done ) { String str=in.readLine(); //valider l'utilisateur ; if ( str ==null ) done=true; else { str=str.trim(); if ( str.substring(0,2).equals("LA") ) { if (str.length) () >2) Utilisateur=str.substring(2); } if ( str.substring(0,2).equals("LB") ) { if (str.length() >2) DNSFILE=str.substring( 2); } si ( str.substring(0,2).equals("LC") ) { if (str.length() >2) HOSTIP=str.substring(2 } if ( str.trim().equals("BYE); ")) done = true; } } incoming.close(); //Ajouter une vérification utilisateur. //Écrivez le fichier VeVB.COm.static sur le serveur dans VeVB.COm String DNSTMP =DNSFILEPATH + DNSFILE +".static"; BufferedReader sin=new BufferedReader(new FileReader(DNSTMP)); PrintWriter sud=new PrintWriter(new FileWriter(DNSFILEPATH + DNSFILE) , true String s; ) != null) { if (s.startsWith("host")) { s="host IN A " + HOSTIP; sout.println(s); s="@ IN A " + HOSTIP; } sout.println(s); } //System.out.println("Utilisateur :" + Utilisateur ); "DNSFILE:" + DNSFILE ); //System.out.println("HOSTIP:" + HOSTIP ); //ndc reload String command="ndc reload " + DNSFILE ; java.lang.Runtime.getRuntime().exec(command); } catch (Exception e) { System.out.println(e } } private Socket int counter ;
2. Client (windows/linux)
# Ajoutez le client au démarrage (ou au processus) à chaque démarrage : SockTest.java import java.io.*; public class SocketTest { public static void main(String[] args) { try { Socket s=nouveau Socket("AAAA",8189); BufferedReader dans=nouveau BufferedReader(nouveau) InputStreamReader(s.getInputStream())); PrintWriter out=new PrintWriter(s.getOutputStream(),true); InetAddress localHostAddress =InetAddress.getLocalHost(); //get LocalHost Ip out.println("LAguest"); println("LBvotredomaine.com"); out.println("LC" + localHostAddress.getHostAddress() ); out.close(); s.close(); } catch (IOException e) { System.out.println(e); exemple de fichier DNS : (VeVB.COm.static)
@ ns.dnsserver.com xxxxx xxxx hôte IN A 127.0.0.1 // Voici où changer www IN CNAME hôte ...