Java 获取 IP 地址是公网还是内网
在网络编程中,我们经常需要判断一个 IP 地址是公网还是内网。公网 IP 地址是可以在互联网上访问的,而内网 IP 地址则只能在局域网内访问。本文将介绍如何在 Java 中获取 IP 地址,并判断其是公网还是内网。
流程图
以下是获取 IP 地址并判断其类型的过程:
flowchart TD
A[开始] --> B[获取本地 IP 地址]
B --> C{判断 IP 地址类型}
C -->|公网 IP| D[结束]
C -->|内网 IP| E[结束]
代码示例
以下是 Java 中获取 IP 地址并判断其类型的代码示例:
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IPChecker {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
String ip = localHost.getHostAddress();
System.out.println("本地 IP 地址: " + ip);
if (isPublicIP(ip)) {
System.out.println("这是一个公网 IP 地址");
} else {
System.out.println("这是一个内网 IP 地址");
}
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public static boolean isPublicIP(String ip) {
return !(ip.startsWith("10.") || ip.startsWith("192.168.") || ip.startsWith("172.16.") || ip.startsWith("172.17.") || ip.startsWith("172.18.") || ip.startsWith("172.19.") || ip.startsWith("172.20.") || ip.startsWith("172.21.") || ip.startsWith("172.22.") || ip.startsWith("172.23.") || ip.startsWith("172.24.") || ip.startsWith("172.25.") || ip.startsWith("172.26.") || ip.startsWith("172.27.") || ip.startsWith("172.28.") || ip.startsWith("172.29.") || ip.startsWith("172.30.") || ip.startsWith("172.31."));
}
}
甘特图
以下是获取 IP 地址并判断其类型的项目进度表:
gantt
title 获取 IP 地址并判断其类型
dateFormat YYYY-MM-DD
section 获取 IP 地址
获取本地 IP 地址 :done, des1, 2022-01-10,2022-01-10
section 判断 IP 地址类型
判断 IP 地址类型 :active, des2, 2022-01-11,2022-01-12
section 结束
结束 :2022-01-13
结尾
通过上述代码示例和流程图,我们可以轻松地在 Java 中获取 IP 地址并判断其是公网还是内网。这对于网络编程和网络安全等领域具有重要意义。希望本文对您有所帮助。