Método comum de resolução de nomes de domínio:
import java.net.*; public class Kkkk { public static void main(String args[]) throws Exception { InetAddress address = InetAddress.getByName("wxh-PC");// wxh-PC é o nome do meu computador System. .println(endereço); System.out.println("-----"); InetAddress endereço1 = InetAddress.getLocalHost(); System.out.println(address1); InetAddress[] endereços = InetAddress .getAllByName("www.baidu.com"); System.out.println(addresses.length); println(endereço); } } }Implemente a resolução de nomes de domínio com IP de host dinâmico
O objetivo é usar um HOST DNS DA INTERNET para direcionar o nome de domínio para o host em casa (pessoal).
Atualmente, o CABLEMODEM é muito rápido e possui IP dinâmico, por isso é possível resolver nomes de domínio para máquinas pessoais.
Isso pode ser feito com configurações muito simples.
Por exemplo, se você tiver um nome de domínio seudomínio.com, poderá resolver esse nome de domínio para qualquer host.
1. O servidor (IP: AAAA) inicia um pequeno processo de resolução dinâmica de DNS.
O arquivo de nome de domínio de VeVB.COm é /var/named/VeVB.COm
Crie outro /var/named/VeVB.COm.static (o arquivo modelo pode ser usado para gerar VeVB.COm)
(JDK1.3, Linux)
# O código original é o seguinte: ThreadDNSReloadServer.java import java.io.*; import public class ThreadDNSReloadServer { public static void main(String[] args) { int i=1; new ServerSocket(8189); for (;;) { Soquete de entrada =s.accept(); " + i); new ThreadDNSReloadHandle(incoming,i).start(); i++; } } catch (Exception e) { System.out.println(e); } } } class ThreadDNSReloadHandle estende Thread { public ThreadDNSReloadHandle(Socket i, int c) { entrada= i; contador=c } public void run() { tentar { BufferedReader in=new BufferedReader(new InputStreamReader(incoming.getInputStream())); String User="Desconhecido"; USER_VALIDATED=true; booleano feito=falso; while (!done) { String str=in.readLine(); //validar usuário; if ( str ==null ) done=true; else { str=str.trim(); () >2) Usuário=str.substring(2 } if ( str.substring(0,2).equals("LB") ) { if (str.length() >2) DNSFILE=str.substring( 2); } se ( str.substring(0,2).equals("LC") ) { if (str.length() >2) HOSTIP=str.substring(2 } if ( str.trim().equals("BYE); ")) done = true; } } incoming.close(); //Adicionar verificação do usuário. //Gravar o arquivo VeVB.COm.static no servidor para VeVB.COm String DNSTMP =DNSFILEPATH + DNSFILE +".static"; BufferedReader sin=new BufferedReader(new FileReader(DNSTMP)); PrintWriter sout=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("Usuário:" + Usuário ); "DNSFILE:" + DNSFILE ); //System.out.println("HOSTIP:" + HOSTIP ); java.lang.Runtime.getRuntime().exec(command); } catch (Exception e) { System.out.println(e);
2. Cliente (windows/linux)
# Adicione o cliente à inicialização (ou processo) sempre que ele for iniciado: SockTest.java import java.io.*; import public class SocketTest { public static void main(String[] args) { try {; Soquete s=novo Soquete("AAAA",8189); BufferedReader in=novo BufferedReader(novo); InputStreamReader(s.getInputStream())); PrintWriter out=new PrintWriter(s.getOutputStream(),true); InetAddress localHostAddress =InetAddress.getLocalHost(); println("LBseudominio.com"); out.println("LC" + localHostAddress.getHostAddress()); out.close(); s.close(); arquivo de amostra DNS: (VeVB.COm.static)
@ ns.dnsserver.com xxxxx xxxx host IN A 127.0.0.1 // É aqui que você altera o host www IN CNAME ...