วิธีการแก้ไขชื่อโดเมนสามัญ:
import java.net.*; public class Kkkk { public static void main(String args[]) ส่งข้อยกเว้น { InetAddress address = InetAddress.getByName("wxh-PC");// wxh-PC คือชื่อคอมพิวเตอร์ของฉัน .println(ที่อยู่); System.out.println("-----"); InetAddress address1 = InetAddress.getLocalHost(); System.out.println (address1); ที่อยู่ InetAddress = InetAddress .getAllByName ("www.baidu.com"); System.out.println (addresses.length); สำหรับ (InetAddress addr : ที่อยู่) { System.out.println println(เพิ่ม);ใช้การจำแนกชื่อโดเมนด้วย IP โฮสต์แบบไดนามิก
วัตถุประสงค์คือการใช้ INTERNET DNS HOST เพื่อนำชื่อโดเมนไปยังโฮสต์ที่บ้าน (ส่วนตัว)
ปัจจุบัน CABLEMODEM มีความรวดเร็วและมีไดนามิก IP จึงสามารถแก้ไขชื่อโดเมนเป็นเครื่องส่วนตัวได้
สามารถทำได้ด้วยการตั้งค่าที่ง่ายมาก
ตัวอย่างเช่น หากคุณมีชื่อโดเมน yourdomain.com คุณสามารถแก้ไขชื่อโดเมนนี้กับโฮสต์ใดก็ได้
1. เซิร์ฟเวอร์ (IP: AAAA) เริ่มกระบวนการเล็กๆ ของการแก้ไข DNS ไดนามิก
ไฟล์ชื่อโดเมนของ VeVB.COm คือ /var/named/VeVB.COm
สร้าง /var/named/VeVB.COm.static อื่น (สามารถใช้ไฟล์เทมเพลตเพื่อสร้าง VeVB.COm ได้)
(JDK1.3, ลินุกซ์)
# รหัสต้นฉบับเป็นดังนี้: ThreadDNSReloadServer.java นำเข้า java.io.*; public class ThreadDNSReloadServer { public static void main(String[] args) { int i=1; ServerSocket ใหม่ (8189); สำหรับ (;;) { ซ็อกเก็ตขาเข้า = s.accept (); System.out.println ("ยอมรับไคลเอนต์ใหม่: " + i); new ThreadDNSReloadHandle(incoming,i).start(); i++; } } catch (ข้อยกเว้น e) { System.out.println(e); } } } class ThreadDNSReloadHandle ขยาย Thread { public ThreadDNSReloadHandle(Socket i, int c) { ขาเข้า = i; counter = c; } public void run () { ลอง { BufferedReader in = new BufferedReader(incoming.getInputStream())); String User="Unkown"; String DNSFILEPATH="/var/named/"; String DNSFILE="VeVB.COm"; สตริง HOSTIP="127.0.0.1"; USER_VALIDATED=true ; boolean เสร็จแล้ว=false; while ( !done ) { String str=in.readLine(); // ตรวจสอบผู้ใช้; if ( str ==null ) เสร็จสิ้น = true; else { str=str.trim(); 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); } ถ้า ( str.substring(0,2).equals("LC") ) { if (str.length() >2) HOSTIP=str.substring(2); } ถ้า ( str.trim().equals("BYE ")) เสร็จสิ้น = true; } } incoming.close(); //เพิ่มการตรวจสอบผู้ใช้ //เขียนไฟล์ VeVB.COm.static ในเซิร์ฟเวอร์ไปที่ VeVB.COm String DNSTMP =DNSFILEPATH + DNSFILE +".static"; BufferedReader (DNSTMP) ใหม่ PrintWriter (s=sin.readLine() ) != null) { if (s.startsWith("host")) { s="host IN A " + HOSTIP; sout.println(s); s="@ IN A" + HOSTIP; } sout.println(s); } //System.out.println("ผู้ใช้:" + ผู้ใช้ ); //System.out.println( "DNSFILE:" + DNSFILE ); //System.out.println("HOSTIP:" + HOSTIP ); //ndc โหลดคำสั่งสตริง = "ndc reload" + DNSFILE ; java.lang.Runtime.getRuntime().exec(command); } catch (ข้อยกเว้น e) { System.out.println(e); } ซ็อกเก็ตส่วนตัวขาเข้า;
2. ไคลเอนต์ (windows/linux)
# เพิ่มไคลเอนต์ในการเริ่มต้น (หรือกระบวนการ) ทุกครั้งที่เริ่มต้น: SockTest.java import java.io.*; import java.net.*; public static void main(String[] args) { try { ซ็อกเก็ต s = ซ็อกเก็ตใหม่ ("AAAA", 8189); BufferedReader ใน = new BufferedReader (new InputStreamReader(s.getInputStream())); PrintWriter out=new PrintWriter(s.getOutputStream(),true); InetAddress localHostAddress =InetAddress.getLocalHost(); // รับ LocalHost Ip out.println("LAguest"); println("LByourdomain.com"); out.println("LC" + localHostAddress.getHostAddress() ); out.close(); s.close(); } จับ (IOException e) { System.out.println(e); ไฟล์ตัวอย่าง DNS: (VeVB.COm.static)
@ ns.dnsserver.com xxxxx xxxx โฮสต์ใน A 127.0.0.1 // นี่คือที่ที่จะเปลี่ยน www ในโฮสต์ CNAME ...