精华内容
下载资源
问答
  • 普通的域名解析方法:import java.net.*;public class Kkkk {public static void main(String args[]) throws Exception {InetAddress address = InetAddress.getByName("wxh-PC");// wxh-PC是我的计算机名System....

    普通的域名解析方法:

    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.com xxxxx

    xxxx

    host    IN A 127.0.0.1      // 此处就是要更改的地方

    www    IN CNAME host

    ...

    展开全文
  • import java.net.InetAddress;import java.net.UnknownHostException;public class ParseDomainName {InetAddress myServer = null;InetAddress myIPaddress = null;String domainName = null;public ParseDomainNam...

    import java.net.InetAddress;

    import java.net.UnknownHostException;

    public class ParseDomainName {

    InetAddress myServer = null;

    InetAddress myIPaddress = null;

    String domainName = null;

    public ParseDomainName(String domainName) {

    this.domainName = domainName;

    }

    public InetAddress getServerIP() {

    try {

    myServer = InetAddress.getByName(domainName);

    } catch (UnknownHostException e) {

    }

    return (myServer);

    }

    // 取得LOCALHOST的IP地址

    public InetAddress getMyIP() {

    try {

    myIPaddress = InetAddress.getLocalHost();

    } catch (UnknownHostException e) {

    }

    return (myIPaddress);

    }

    public static void main(String[] args) {

    ParseDomainName pdn = new ParseDomainName("www.baidu.com");

    System.out.println("Your host IP is: " + pdn.getMyIP().getHostAddress());

    System.out.println("The Server IP is :" + pdn.getServerIP().getHostAddress());

    }

    }

    展开全文
  • } } pom.xml配置如下,引入阿里域名sdk包 com.aliyun aliyun-java-sdk-core 4.3.2 com.aliyun aliyun-java-sdk-alidns 2.0.10 cn.hutool hutool-all 5.1.0  如果报错如下: ...
    1. 打开 idea,创建一个 springboot 工程,将下面代码,工具类拷贝到工程中。使用了spring的定时任务,这个可根据需求自主修改。
    package com.example.springboot222.service;
    
    import com.aliyuncs.IAcsClient;
    import com.example.springboot222.util.AliyunDnsUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.scheduling.annotation.EnableScheduling;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    import java.net.Inet4Address;
    import java.net.Inet6Address;
    import java.net.InetAddress;
    import java.net.NetworkInterface;
    import java.util.Enumeration;
    import java.util.HashMap;
    import java.util.Map;
    
    @Component
    @EnableScheduling
    public class Ipv6Schedule {
    	
    	private static Logger logger = LoggerFactory.getLogger(Ipv6Schedule.class);
    
    	private static String regionId = ""; //必填固定值,必须为“cn-hanghou”
    	private static String accessKeyId = "****"; // your accessKey
    	private static String accessKeySecret = "******";// your accessSecret
    	//时间表达式,1分钟执行一次ipv6地址更新
    	@Scheduled(cron="1 0/1 * * * ?")
    	public void test1() throws Exception{
    		Enumeration<NetworkInterface> interfs = NetworkInterface.getNetworkInterfaces();
    		
    		Map<String,String> reqMap = new HashMap<String,String>();
    		int i = 1;
    		
    		while (interfs.hasMoreElements())
    		{
    			NetworkInterface interf = interfs.nextElement();
    //			if(interf.getDisplayName().contains("AX200")) {
    				Enumeration<InetAddress> addres = interf.getInetAddresses();
    				while (addres.hasMoreElements())
    				{
    					InetAddress in = addres.nextElement();
    					if (in instanceof Inet4Address)
    					{
    						logger.info("v4." + i + ":" + in.getHostAddress());
    						reqMap.put("v4."+i, in.getHostAddress());
    					}
    					else if (in instanceof Inet6Address)
    					{
    						logger.info("v6." + i + ":" + in.getHostAddress());
    						reqMap.put("v6."+i, in.getHostAddress());
    					}
    					i++;
    				}
    //			}
    		}
    
    
    		IAcsClient client = AliyunDnsUtils.getIAcsClient(accessKeyId,accessKeySecret);
    		String recordId = AliyunDnsUtils.uploadIpv6ToAliyun(client,reqMap.get("v6.6"));
    
    	}
    
    }
    
    package com.example.springboot222.util;
    
    
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.IAcsClient;
    import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsRequest;
    import com.aliyuncs.alidns.model.v20150109.DescribeDomainRecordsResponse;
    import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordRequest;
    import com.aliyuncs.alidns.model.v20150109.UpdateDomainRecordResponse;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.exceptions.ServerException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.profile.IClientProfile;
    import com.aliyuncs.utils.StringUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    /**
     * @auther Bin
     * @date 2021/4/27 15:16
     * @description
     */
    public class AliyunDnsUtils {
    
        private static Logger logger = LoggerFactory.getLogger(AliyunDnsUtils.class);
    
        public static IAcsClient getIAcsClient(String accessKeyId,String accessKeySecret){
            String regionId = "cn-hangzhou"; //必填固定值,必须为“cn-hanghou”
    
            IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            // 若报Can not find endpoint to access异常,请添加以下此行代码
            // DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Alidns", "alidns.aliyuncs.com");
            return new DefaultAcsClient(profile);
        }
    
        public static String uploadIpv6ToAliyun(IAcsClient client,String ipv6){
    
          /*  if (ipv6.contains("fe80:")){
                logger.info("This IPV6 [{}] is not standard IPV6, It can't update the aliDns",ipv6);
                return null;
            }*/
    
            DescribeDomainRecordsRequest request = new DescribeDomainRecordsRequest();
            request.setDomainName("shyg.top"); //你申请的阿里域名,有特价的,一年1元
            request.setRRKeyWord("ddns1"); //主机记录,相当于你的二级域名
            DescribeDomainRecordsResponse response;
            try {
                response = client.getAcsResponse(request);
                DescribeDomainRecordsResponse.Record record = response.getDomainRecords().size()>0?response.getDomainRecords().get(0) : new DescribeDomainRecordsResponse.Record();
                String old_ip = StringUtils.isEmpty(record.getValue())?"127.0.0.1":record.getValue();
    //            String cur_ip = "2408:8406:7840:4cee:4c15:fd0:a58a:8b2f";
    //            cur_ip = cur_ip.substring(cur_ip.indexOf("/")+1,cur_ip.length());
    
                if(!old_ip.equals(ipv6)){
                    logger.info("原地址{"+old_ip+"},新地址{"+ipv6+"}。");
                    UpdateDomainRecordRequest udr_req = new UpdateDomainRecordRequest();
                    udr_req.setValue(ipv6);
                    udr_req.setType(record.getType());
                    udr_req.setTTL(record.getTTL());
                    udr_req.setPriority(record.getPriority());
                    udr_req.setLine(record.getLine());
                    udr_req.setRecordId(record.getRecordId());
                    udr_req.setRR("ddns1");
                    @SuppressWarnings("unused")
                    UpdateDomainRecordResponse udr_resp =  client.getAcsResponse(udr_req);
                    logger.info("新地址{"+ipv6+"}上传成功");
                    return udr_resp.getRecordId();
                }else{
                    logger.info("原地址与新地址相同,不需要修改");
                    return null;
                }
            } catch (ServerException e1) {
                logger.error("IPV6上传失败!",e1);
            } catch (Exception e1) {
                logger.error("IPV6上传失败![{}]",e1);
            }
            return null;
        }
    }
    1. pom.xml配置如下,引入阿里域名sdk包
            <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>aliyun-java-sdk-core</artifactId>
                <version>4.3.2</version>
            </dependency>
    
            <dependency>
                <groupId>com.aliyun</groupId>
                <artifactId>aliyun-java-sdk-alidns</artifactId>
                <version>2.0.10</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.1.0</version>
            </dependency>

     

     

    1. 如果报错如下:

    com.aliyuncs.exceptions.ClientException: MissingRecordId : RecordId is mandatory for this action.
    RequestId : 4EFD97F4-B6D2-49BA-A53C-BC3C9FDCC712

    主要原因是 配置的主机记录有误,导致查询解析记录为空 抛出的异常。主机记录配置截图如下:

    如果没有,请添加一条记录。

    另外还需要配置下解析相关的配置:

    (ps:记录值由于是必输字段,可以输入一个默认值:“2408:8406:7840:4cee:4c15:fd0:a58a:8b2f”)

    阿里云AccessKey ID获取方式,请参看搂住的另一篇文章。https://blog.csdn.net/shyg866/article/details/106277640

     

     
    展开全文
  • 用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析动态域名有很多,比如花生壳动态域名服务,但是都...

    使用原理

            DDNS(Dynamic Domain Name Server)是动态域名服务的缩写。是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析

            动态域名有很多,比如花生壳动态域名服务,但是都需要花钱;有没有免费的方法呢,还真有就是:使用DNSPod + 个人域名 + ArDNSPod脚本(只需要注册一个域名即可)

    利用DNSPod实现动态域名解析

    1.登陆dnspod控制台https://console.dnspod.cn/dns/list,创建一条A记录解析,IP值暂时随便填就行:

    展开全文
  • 1 域名解析,将域名可转换为ip地址InetAddress也可以通过使用getAddress()来获得IP地址,但是它的返回值是一个4个字节的数组。因此尽管getAddress()在获得IP方面是有用的,但却不适于用来输出。package dns;import ...
  • #if 0//不能解析域名的方式 structsockaddr_in server; server.sin_family=AF_INET; server.sin_addr.s_addr= gethostIPbyname((const char*)ntpServerName); server.sin_port=htons(ntpPort);if(-1 == (int)server....
  • MVC实现动态二级域名

    2021-03-13 15:11:38
    //匹配域名和路由 Match domainMatch =domainRegex.Match(requestDomain); Match pathMatch=pathRegex.Match(requestPath);//路由数据 RouteData data = null;if (domainMatch.Success &&pathMatch.Success) { data=...
  • 背景在撸爬虫,但目标网站上了cloudflare。很奇怪,电浏览器能正常打开,但java程序里请求却需要验证码。...想到了域名的历史解析,翻了一会后找到了疑似原站的IP。修改电脑的host文件,让域名直接指...
  • 通过java springboot实现阿里云dns动态解析_YZero_cn的博客-CSDN博客https://blog.csdn.net/YZero_cn/article/details/120337681以上面的文章为基础,做了一些定时任务的逻辑改动。 问题 之前将定时任务设置为每...
  • 域名(Domain Name),是由一串用点分隔的名字组成的Internet上某...一个域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等),下面介绍一下Java解析域名获取IP数组方法。Java获取域名下所有Ip地址...
  • 域名解析和cdn 原理

    2021-03-17 14:16:18
    2)、浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;3)、浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;4)、浏览器根据域名主机返回的数据显示网页的内容。使用了CDN缓存后的...
  • 内容转自:分享一个通用的godaddy_DDNS_shell脚本 - OPENWRT专版 - 恩山无线论坛 - Powered by Discuz!本脚本针对ipv6,v4也支持,只需在gdip的解析步骤稍作修改即可。...先进入godaddy的nds解析页面设置域名信息;..
  • 在广域网中测试时,因为没有固定ip,所以就申请了一个no-ip的动态域名。结果在运行程序时,上面语句中的ip直接换为域名,总是出现connection refused的提示。端口是打开的,可是出现这个提示,就想着是...
  • 一、通过Linux命令实现ping ...二、DNS的理解DNS的解析流程:1.客户端访问www.baidu.com,检查浏览器是否有缓存,若无,往下走 2.操作系统检查host文件,有无对应关系...
  • URI uri = URI.create(... String host = uri.getHost(); int port = uri.getPort(); System.out.println(host); System.out.println(port);
  • 上个学期学了jspweb开发,用到了tomcat服务器,一直都是在本地测试,所以就想把他上传到服务器,正好自己有一个域名,并且已经解析到服务器的IP了,所以做了一些尝试。 一开始是用的win服务器自家 的IIS(Internet ...
  • 目录 1.创建一个springboot项目: 2.添加依赖 ...首先简单回顾一下整体思路:在服务器部署一个基于springboot的jar包,长期运行该jar包,在里面设置一个定时任务,定时执行函数实现dns解析的...
  • 果然不负厚望的已经有大佬们给出了demo代码 我们只需要自己写一个DnsResolver 实现类重写其resolver方法即可控制每个域名解析到的ip地址。 但是这个方案有一个问题。它需要硬编码穷举所有的希望自定义解析域名...
  • 文件上传用web实现很...用java实现也很简单,注意一下请求报文格式就好了。首先我们看一下报文数据POST /epg/admin/epg/originalfile/upload.doHTTP/1.1Accept-Encoding: gzip, deflateContent-Length: 3714479Con...
  • 域名解析和域名泛解析由于建网站等一系列的需求现在注册域名的朋友是越来越多了,然而注册域名时经常会遇到...一、什么是域名解析域名解析就是域名到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为...
  • 当HTTP请求Web服务器数据接口时,如果给的参数(url)带有服务器主机域名这种格式,必定通过DNS解析拿到Ip地址进而继续开启通道连接。那么如何进行解析的呢?下面通过源码分析的形式向大家展示。 当请求连接时,才会...
  • Apache和Tomcat 实现域名解析的尝试你想让自己的服务器为每个会员提供一个独立的二级域名吗?比如aa.test.combb.test.com/blog当然aa、bb都是你的一个会员而已下面是我今天尝试成功的部分1 安装apache ,tomcat 和...
  • Java实现代码:package online.tools.applet.service.dns;import java.util.ArrayList;import java.util.Hashtable;import java.util.List;import javax.naming.NamingException;import javax.naming.directory....
  • 由于办公室没有办固定IP是动态IP,他之前用的都是某生壳动态域名来远程访问这两个系统的,最近某生壳开始收费了,而且获取到的动态IP也不对,导致无法远程访问了,他寻思着能不能帮他做个小软件,能自动获取到办公室...
  • java如何截取域名后的路径和参数

    千次阅读 2021-02-27 12:38:49
    第四步:实现功能。具体代码如下所示:@Controller@RequestMapping("/downloadImg")public class DownloadController { @RequestMapping("download") public void testUrl(HttpServletRequest request) throws ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,145
精华内容 23,258
关键字:

java实现动态域名解析

java 订阅