gpt4 book ai didi

Java 验证 IP 地址和子网

转载 作者:太空宇宙 更新时间:2023-11-04 14:01:32 33 4
gpt4 key购买 nike

我正在执行一项任务,必须分配 IP 地址、子网掩码、默认网关和 DNS 并验证它们。

我已经获得了 IP 地址 validator 方法,通过使用字符串分割来确保有 3 个点(4 个八位字节),并且数字在有效范围内 (1-255)。

我现在正在尝试弄清楚如何确保它是可分配的地址(即,如果它是 A 类地址,请确保它不是 124.0.0.0 等)。子网掩码也是如此,我需要检查各个部分,看看它们是 255.0.0.0 还是 255.255.255.0

我还研究了字符串分词器,并有一个它经过 while 循环,当字符串有更多元素时,我可以使用 . 作为 delim 将每个元素打印到屏幕上,但我不确定如何存储信息,以便稍后可以比较这些值(在 if 语句中?)

抱歉,我对编程还很陌生,希望您理解。感谢您的帮助!

最佳答案

import java.util.regex

public abstract class CommonBase {
private final static Long[] SUBNET_MASK = new Long[]{4294934528L, 4294950912L, 4294959104L, 4294963200L, 4294965248L, 4294966272L, 4294966784L, 4294967040L, 4294967168L, 4294967232L, 4294967264L, 4294967280L, 4294967288L, 4294967292L, 4294967294L, 4294967295L};

public static boolean isValidIpAddress(String ipAddress) {
if (ipAddress != null) {
Matcher matcher = Patterns.IP_ADDRESS.matcher(ipAddress);
if (matcher != null) {
return matcher.matches();
}
}
return false;
}

public static long ipAddressToLong(String ipAddress) {
if (ipAddress != null) {
String[] s = ipAddress.split("\\.");
if (s != null && s.length == 4) {
long result = 0;
for (int i = 3; i >= 0; i--) {
try {
long n = Long.parseLong(s[3 - i]);
result |= n << (i * 8);
} catch (Exception ex) {
return -1;
}
}
return result;
}
}
return -1;
}

public static boolean isValidSubnetMask(String subnetMask) {
if (subnetMask != null) {
long lSubnetMask = ipAddressToLong(subnetMask);
if (lSubnetMask > 0) {
return Arrays.asList(SUBNET_MASK).contains(lSubnetMask);
}
}
return false;
}
}

如何使用上面的代码:

CommonBase.isValidIpAddress("192.168.0.1"); // true
CommonBase.isValidSubnetMask("255.255.255.0"); // true

关于Java 验证 IP 地址和子网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262204/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com