Gewöhnliche Methode zur Auflösung von Domainnamen:
import java.net.*; public class Kkkk { public static void main(String args[]) throws Exception { InetAddress address = InetAddress.getByName("wxh-PC");// wxh-PC ist mein Computername .println(address); System.out.println("-----"); System.out.println(address1); InetAddress[] Adressen = InetAddress .getAllByName("www.baidu.com"); for (InetAddress addr : Adressen) { System.out. println(addr); } } }Implementieren Sie die Auflösung von Domänennamen mit dynamischer Host-IP
Der Zweck besteht darin, einen INTERNET-DNS-HOST zu verwenden, um den Domainnamen an den Host zu Hause (persönlich) weiterzuleiten.
Derzeit ist CABLEMODEM sehr schnell und verfügt über eine dynamische IP, sodass es möglich ist, Domänennamen auf persönliche Computer aufzulösen.
Dies ist mit sehr einfachen Einstellungen möglich.
Wenn Sie beispielsweise den Domänennamen yourdomain.com haben, können Sie diesen Domänennamen in einen beliebigen Host auflösen.
1. Der Server (IP: AAAA) startet einen kleinen Prozess der dynamischen DNS-Auflösung.
Die Domänennamendatei von VeVB.COm ist /var/named/VeVB.COm
Erstellen Sie eine weitere /var/named/VeVB.COm.static (Vorlagendatei kann zum Generieren von VeVB.COm verwendet werden)
(JDK1.3, Linux)
# Der Originalcode lautet wie folgt: ThreadDNSReloadServer.java import java.net.*; public class ThreadDNSReloadServer { public static void main(String[] args) { int i=1; try { ServerSocket s= new ServerSocket( 8189); for (;;) { Socket incoming =s.accept(); System.out.println("accept new client: " + i); new ThreadDNSReloadHandle(incoming,i).start(); i++; } } Catch (Exception e) { System.out.println(e); } } } class ThreadDNSReloadHandle erweitert Thread { public ThreadDNSReloadHandle(Socket i, int c) { incoming= i; counter=c } public void run() { try { BufferedReader in=new BufferedReader(new InputStreamReader(incoming.getInputStream())); String DNSFILEPATH="/var/named/"; String HOSTIP="127.0.0.1"; USER_VALIDATED=true ; boolean done=false; while ( !done ) { String str=in.readLine(); //validate user; if ( str ==null ) done=true; if ( str.substring(0,2).equals("LA") ) { if (str.length () >2) User=str.substring(2); } if ( str.substring(0,2).equals("LB") ) { if (str.length() >2) DNSFILE=str.substring( 2); } wenn ( str.substring(0,2).equals("LC") ) { if (str.length() >2) HOSTIP=str.substring(2); } if ( str.trim().equals("BYE ")) done = true; } } incoming.close(); //Benutzerüberprüfung hinzufügen. //Die VeVB.COm.static-Datei auf dem Server in VeVB.COm schreiben String DNSTMP =DNSFILEPATH + DNSFILE +".static"; BufferedReader sin=new BufferedReader(DNSTMP)); PrintWriter(new FileWriter(DNSFILEPATH + DNSFILE) , true); ) != null) { if (s.startsWith("host")) { s="host IN A " + HOSTIP; sout.println(s); s="@ IN A " + HOSTIP; } sout.println(s); //System.out.println( "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 incoming;
2. Client (Windows/Linux)
# Fügen Sie den Client bei jedem Start zum Startup (oder Prozess) hinzu: SockTest.java import java.io.*; import java.net.*; public static void main(String[] args) { try { Socket s=new Socket("AAAA",8189); BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out=new PrintWriter(s.getOutputStream(),true); //get LocalHost Ip out.println("LAguest"); println("LByourdomain.com"); out.println("LC" + localHostAddress.getHostAddress() ); out.close(); s.close(); } Catch (IOException e) { System.out.println(e); DNS-Beispieldatei: (VeVB.COm.static)
@ ns.dnsserver.com xxxxx xxxx host IN A 127.0.0.1 // Hier muss www IN CNAME host geändert werden ...