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

1.编程解析域名:

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

思路:

  • 通过命令行参数args[0]获取用户输入的域名或IP地址。
  • 使用InetAddress.getByName(args[0])用于获取相应的 InetAddress 对象。
  • 判断用户输入的参数是IP地址还是域名。
  • 如果是域名,则使用getHostAddress()解析为IP地址,并输出IP地址。
  • 如果是IP地址,则使用getCanonicalHostName()和getHostName()反向解析为主机名或域名,并输出规范主机名和域名,
  • 对于判断是否是合法IP地址:先判断是IPv4地址还是IPv6地址,如果都不是则不是合法地址。如果是IPv4,则按字符串点号分割成四部分,对每一部分判断是否在合法范围;如果是IPv6,则使用InetAddress.getByName()进行解析,解析成功则合法。

程序源码:

  1. import java.net.InetAddress;
  2. import java.net.UnknownHostException;
  3. public class DomainResolver {
  4.     public static void main(String[] args){
  5.         String input = args[0];// 从命令行参数获取用户输入的域名或IP地址
  6.         try{
  7.             InetAddress address = InetAddress.getByName(input);
  8.             // 判断用户输入的参数是IP地址还是域名
  9.             if (isValidIP(input)){
  10.                 // 如果是IP地址则反向解析为主机名或域名
  11.                 System.out.println("规范主机名:"+address.getCanonicalHostName());
  12.                 System.out.println("域名:"+address.getHostName());
  13.             }else{
  14.                 // 如果是域名则解析为IP地址
  15.                 System.out.println("IP地址:"+address.getHostAddress());
  16.             }
  17.         } catch (UnknownHostException e) {
  18.             System.out.println("不能解析此域名或IP地址");
  19.             e.printStackTrace();
  20.         }
  21.     }
  22.     // 判断是否是合法的IP地址
  23.     public static boolean isValidIP(String ip){
  24.         if (ip == null || ip.isEmpty()){ // ip为空
  25.             return false;
  26.         }
  27.         // 检查是否为IPv4地址
  28.         if(ip.contains(".")){
  29.             String[] parts = ip.split("\\.");
  30.             if(parts.length != 4){
  31.                 return false;
  32.             }
  33.             for(String s : parts){
  34.                 int i = Integer.parseInt(s);
  35.                 if(i<0 || i>255){
  36.                     return false;
  37.                 }
  38.             }
  39.             return true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值