互联网编程之域名IP转换及应用URL类定位和获取数据编程

2023-07-30 15:00:29 浏览数 (1)

需求

编写域名解析程序(30分):

编写一个可重用的域名解析程序模块,使之能够将用户输入的域名解析为IP地址。

编写下载功能程序(40分):

使用URL类,编写一个可重用的下载程序模块,完成HTML和图像文件的下载。即用户输入一个URL,程序会将URL所指向的网络资源下载到本地,并保存到指定磁盘位置。

编写断点续传下载功能程序(30分):

选择网络上一个较大的文件(如10MB以上),并继续完善2中的文件下载程序,使其具有“断点续传”功能,改写成为一个可重用的具“断点续传”功能的可重用程序模块。

域名解析程序

这段代码是一个域名解析器类,用于将域名解析为对应的 IP 地址。

代码的主要功能如下:

  1. DomainNameResolution() 方法:它接受一个域名作为参数,并返回一个字符串数组,其中包含了该域名所对应的所有 IP 地址。
  2. 在方法内部,通过调用 InetAddress 类的 getAllByName() 方法,传入域名参数,获取到与该域名相关联的所有 InetAddress 对象(即对应的 IP 地址)并存储在 inetAddress 数组中。
  3. 随后,使用一个循环遍历 inetAddress 数组,将每个 InetAddress 对象中的 IP 地址通过调用 getHostAddress() 方法转换成字符串,并存储在 IP 字符串数组中。
  4. 最后,将 IP 字符串数组作为结果返回。

总体而言,这个代码实现了将域名解析为对应 IP 地址的功能。

代码语言:javascript复制
import java.net.InetAddress;
import java.net.UnknownHostException;

public class DomainNameResolver {
    public String [] DomainNameResolution(String domainName) throws UnknownHostException {
        InetAddress[] inetAddress=InetAddress.getAllByName(domainName);
        String [] IP=new String[inetAddress.length];
        for(int i=0;i<IP.length;i  ){
            IP[i]=inetAddress[i].getHostAddress();
        }
        return IP;
    }
}

下载功能程序

这段代码是一个简单的下载器类,用于从指定的 URL 地址下载文件并保存到指定的本地路径。

代码的主要功能如下:

  1. Download() 方法:它接受一个 URL 地址和文件保存路径作为参数,并将通过 HTTP 连接下载的文件保存到本地。
  2. 在方法内部,首先创建一个 HttpURLConnection 对象,将其设置为指定 URL 地址所建立的连接。然后通过调用该连接的 getInputStream() 方法获取输入流,以读取从 URL 下载的数据。
  3. 接下来,创建一个 File 对象,表示要保存的文件,并通过调用 FileOutputStream 构造函数创建一个输出流,以将数据写入文件。
  4. 通过循环不断从输入流中读取数据(每次读取一个字节),并通过输出流将数据写入到文件中,直到读取完毕。
  5. 最后,关闭输出流和输入流,释放资源。

总体而言,这个代码实现了简单的文件下载功能,可以从指定的 URL 下载文件并保存到本地文件系统中。

代码语言:javascript复制
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class Downloader {
    public void Download(String url,String path) throws IOException {
        HttpURLConnection connection=(HttpURLConnection) new URL(url).openConnection();
        InputStream input=connection.getInputStream();
        File file=new File(path);
        OutputStream output=new FileOutputStream(file);
        int one;
        while((one=input.read())!=-1){
            output.write(one);
        }
        output.close();
        input.close();
    }
}

断点续传下载

这段代码是一个断点续传的下载器类,用于从指定的 URL 地址断点续传下载文件并保存到指定的本地路径。

代码的主要功能如下:

  1. Download() 方法:它接受一个 URL 地址和文件保存路径作为参数,并实现了断点续传的下载功能。
  2. 在方法内部,首先创建一个 HttpURLConnection 对象,将其设置为指定 URL 地址所建立的连接。然后根据本地文件是否已存在来确定断点续传的起始位置及输出流的构造方式。
  3. 如果文件已存在,则获取已下载的文件大小(即已保存文件的长度),并以追加模式(true)创建 FileOutputStream 对象,以便将数据写入已下载的文件末尾;如果文件不存在,则直接以创建新文件的方式创建 FileOutputStream 对象。
  4. 设置 HTTP 请求头部的 "Range" 属性,指定从已下载的文件末尾开始进行断点续传。
  5. 获取输入流以读取从 URL 下载的数据。
  6. 通过循环不断从输入流中读取数据(每次读取一个字节),并通过输出流将数据写入到文件中,实现断点续传的下载。
  7. 最后,关闭输出流和输入流,释放资源。

总体而言,这个代码实现了断点续传的文件下载功能,可以从指定的 URL 地址断点续传下载文件并保存到本地文件系统中。

代码语言:javascript复制
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class BPResumeDownloader {
    public void Download(String url,String path) throws IOException {
        HttpURLConnection connection=(HttpURLConnection) new URL(url).openConnection();
        long startBytes=0;
        File file=new File(path);
        OutputStream output;
        if(file.exists()){
            startBytes=file.length();
            output=new FileOutputStream(file,true);
        }else{
            output=new FileOutputStream(file);
        }
        connection.setRequestProperty("Range","bytes=" startBytes "-");
        InputStream input=connection.getInputStream();
        int one;
        while((one=input.read())!=-1){
            output.write(one);
        }
        output.close();
        input.close();
    }
}

0 人点赞