手机
当前位置:查字典教程网 >编程开发 >Java >使用Java实现DNS域名解析的简单示例
使用Java实现DNS域名解析的简单示例
摘要:普通的域名解析方法:importjava.net.*;publicclassKkkk{publicstaticvoidmain(String...

普通的域名解析方法:

import java.net.*; public class Kkkk { public static void main(String args[]) throws Exception { InetAddress address = InetAddress.getByName("wxh-PC");// wxh-PC是我的计算机名 System.out.println(address); System.out.println("-----"); InetAddress address1 = InetAddress.getLocalHost(); System.out.println(address1); InetAddress[] addresses = InetAddress .getAllByName("www.baidu.com"); System.out.println(addresses.length); for (InetAddress addr : addresses) { System.out.println(addr); } } }

实现具有动态主机IP的域名解析

目的利用一台INTERNET DNS HOST 将域名定向到家中(个人)的主机上.

目前CABLEMODEM已经很快了,而且有动态IP,所以就有了将域名解析到个人机器的上可能.

只要通过很简单的设置就可以搞定.

例如你有一个域名叫 yourdomain.com ,你可以将此域名解析任意的主机.

1.服务器 (IP: A.A.A.A)启动DNS动态解析的一个小进程.

jb51.net的域名文件为 /var/named/jb51.net

再建个/var/named/jb51.net.static (模板文件可以用来生成jb51.net的)

(JDK1.3 , linux )

#原代码如下: ThreadDNSReloadServer.java import java.io.*; 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 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="Unkown"; String DNSFILEPATH="/var/named/"; String DNSFILE="jb51.net"; String HOSTIP="127.0.0.1"; boolean USER_VALIDATED=true ; boolean done=false; while ( !done ) { String str=in.readLine(); //validate user; if ( str ==null ) done=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); } if ( str.substring(0,2).equals("LC") ) { if (str.length() >2) HOSTIP=str.substring(2); } if ( str.trim().equals("BYE")) done = true; } } incoming.close(); //加入用户验证. //将服务器中的jb51.net.static文件写入jb51.net中 String DNSTMP =DNSFILEPATH + DNSFILE +".static"; BufferedReader sin=new BufferedReader(new FileReader(DNSTMP)); PrintWriter sout=new PrintWriter(new FileWriter(DNSFILEPATH + DNSFILE) , true); String s; while ((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("User:" + User ); //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; private int counter; }

2.客户机(windows / linux)

# 客户端每次启动时加入到开机启动(或进程中): SockTest.java import java.io.*; import java.net.*; public class SocketTest {public static void main(String[] args) { try { Socket s=new Socket("A.A.A.A",8189); BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out=new PrintWriter(s.getOutputStream(),true); InetAddress localHostAddress =InetAddress.getLocalHost() ;//get LocalHost Ip out.println("LAguest"); out.println("LByourdomain.com"); out.println("LC" + localHostAddress.getHostAddress()); out.close(); s.close(); } catch (IOException e) { System.out.println(e); } } }

dns 样本文件: ( jb51.net.static)

@ ns.dnsserver.comxxxxx xxxx host IN A 127.0.0.1 // 此处就是要更改的地方 wwwIN CNAME host ...

【使用Java实现DNS域名解析的简单示例】相关文章:

java中使用sax解析xml的解决方法

使用java代码实现保留小数点的位数

在java中使用dom解析xml的示例分析

java 自动生成略缩图示例代码

用java实现冒泡排序算法

使用java获取md5值的两种方法

在java中使用dom4j解析xml(示例代码)

java 实现约瑟夫环的实例代码

Java实现按中文首字母排序的具体实例

使用JAVA判断凸多边形的示例代码

精品推荐
分类导航