Java判断IP和域名

1. 流程概述

在Java中判断IP和域名的过程可以分为以下几个步骤:

步骤 动作
步骤一 输入要判断的IP地址或域名
步骤二 判断输入是否为合法的IP地址
步骤三 判断输入是否为合法的域名
步骤四 使用Java代码判断输入的IP地址是否可达
步骤五 使用Java代码判断输入的域名是否可达

下面将分别介绍每个步骤需要做的事情以及相应的代码。

2. 判断IP地址的合法性

在Java中判断IP地址的合法性可以使用正则表达式进行匹配,判断输入是否符合IP地址的格式要求。

/**
 * 判断输入的字符串是否为合法的IP地址
 * @param ip 输入的字符串
 * @return 是否为合法的IP地址
 */
public boolean isValidIpAddress(String ip) {
    // 使用正则表达式匹配IP地址格式,其中 \d{1,3} 表示匹配1到3位的数字
    String regex = "^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$";
    return ip.matches(regex);
}

3. 判断域名的合法性

在Java中判断域名的合法性可以使用正则表达式进行匹配,判断输入是否符合域名的格式要求。

/**
 * 判断输入的字符串是否为合法的域名
 * @param domain 输入的字符串
 * @return 是否为合法的域名
 */
public boolean isValidDomain(String domain) {
    // 使用正则表达式匹配域名格式
    String regex = "^(?:(?!-|_)[a-zA-Z0-9-_]{1,63}(?<!-|_)\\.)+[a-zA-Z]{2,}$";
    return domain.matches(regex);
}

4. 判断IP地址可达性

在Java中判断IP地址是否可达可以使用InetAddress类的isReachable方法。

/**
 * 判断输入的IP地址是否可达
 * @param ip 输入的IP地址
 * @return 是否可达
 */
public boolean isIpReachable(String ip) {
    try {
        InetAddress address = InetAddress.getByName(ip);
        return address.isReachable(5000); // 设置超时时间为5秒
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

5. 判断域名可达性

在Java中判断域名是否可达可以使用InetAddress类的isReachable方法。

/**
 * 判断输入的域名是否可达
 * @param domain 输入的域名
 * @return 是否可达
 */
public boolean isDomainReachable(String domain) {
    try {
        InetAddress address = InetAddress.getByName(domain);
        return address.isReachable(5000); // 设置超时时间为5秒
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
}

6. 完整代码示例

import java.io.IOException;
import java.net.InetAddress;

public class IpAndDomainChecker {
    /**
     * 判断输入的字符串是否为合法的IP地址
     * @param ip 输入的字符串
     * @return 是否为合法的IP地址
     */
    public boolean isValidIpAddress(String ip) {
        // 使用正则表达式匹配IP地址格式,其中 \d{1,3} 表示匹配1到3位的数字
        String regex = "^((\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(\\d{1,2}|1\\d{2}|2[0-4]\\d|25[0-5])$";
        return ip.matches(regex);
    }

    /**
     * 判断输入的字符串是否为合法的域名
     * @param domain 输入的字符串
     * @return 是否为合法的域名
     */
    public boolean isValidDomain(String domain) {
        // 使用正则表达式匹配域名格式
        String regex = "^(?:(?!-|_)[a-zA-Z0-9-_]{