Java 获取 IP 地址是公网还是内网

在网络编程中,我们经常需要判断一个 IP 地址是公网还是内网。公网 IP 地址是可以在互联网上访问的,而内网 IP 地址则只能在局域网内访问。本文将介绍如何在 Java 中获取 IP 地址,并判断其是公网还是内网。

流程图

以下是获取 IP 地址并判断其类型的过程:

公网 IP 内网 IP 开始 获取本地 IP 地址 判断 IP 地址类型 结束 结束

代码示例

以下是 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."));
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

甘特图

以下是获取 IP 地址并判断其类型的项目进度表:

获取 IP 地址并判断其类型 2022-01-10 2022-01-10 2022-01-10 2022-01-10 2022-01-11 2022-01-11 2022-01-11 2022-01-11 2022-01-12 2022-01-12 2022-01-12 2022-01-12 2022-01-13 获取本地 IP 地址 判断 IP 地址类型 结束 获取 IP 地址 判断 IP 地址类型 结束 获取 IP 地址并判断其类型

结尾

通过上述代码示例和流程图,我们可以轻松地在 Java 中获取 IP 地址并判断其是公网还是内网。这对于网络编程和网络安全等领域具有重要意义。希望本文对您有所帮助。