获取当前IP地址的Java代码实现

获取当前IP地址是Java开发中常见需求之一,本文将从以下多个方面对获取当前IP地址的Java代码实现做详细的阐述。

一、使用Inet4Address获取当前IP地址

Inet4Address是Java中一个用于表示IPv4地址的类,可以通过该类获取当前主机的IP地址。

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressUtil {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress inetAddress = InetAddress.getLocalHost();
        System.out.println("当前IP地址为:" + inetAddress.getHostAddress());
    }
}

通过调用getHostAddress()方法即可获取当前主机的IP地址。

二、使用NetworkInterface获取当前IP地址

除了Inet4Address,还可以使用Java提供的NetworkInterface类获取当前主机的IP地址。

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class NetworkInterfaceUtil {
    public static void main(String[] args) throws SocketException {
        Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
        while (networkInterfaces.hasMoreElements()) {
            NetworkInterface networkInterface = networkInterfaces.nextElement();
            Enumeration inetAddresses = networkInterface.getInetAddresses();
            while (inetAddresses.hasMoreElements()) {
                InetAddress inetAddress = inetAddresses.nextElement();
                System.out.println("当前IP地址为:" + inetAddress.getHostAddress());
            }
        }
    }
}

通过NetworkInterface获取所有的网络接口,再通过网络接口获取所有的IP地址。

三、使用HttpClient发送GET请求获取当前IP地址

除了使用Java自带的类获取IP地址,还可以通过HttpClient发送GET请求获取当前主机的IP地址。

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

public class HttpClientUtil {
    public static void main(String[] args) throws IOException {
        HttpClient httpClient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet("http://myip.ipip.net/");
        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        String result = EntityUtils.toString(httpEntity);
        String ip = result.substring(result.indexOf("[") + 1, result.indexOf("]"));
        System.out.println("当前IP地址为:" + ip);
    }
}

通过发送GET请求至http://myip.ipip.net/,并从返回结果中解析出当前主机的IP地址。

四、使用Java获取其它网络信息

除了获取当前IP地址,还可以使用Java获取其它网络信息,例如:本机的MAC地址、域名、端口等。

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.UnknownHostException;
import java.util.Enumeration;

public class NetworkInfoUtil {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress inetAddress = InetAddress.getLocalHost();
        System.out.println("当前主机名为:" + inetAddress.getHostName());
        System.out.println("当前主机的IP地址为:" + inetAddress.getHostAddress());

        Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();

        while (networkInterfaces.hasMoreElements()) {
            NetworkInterface networkInterface = (NetworkInterface) networkInterfaces.nextElement();
            byte[] macBytes = networkInterface.getHardwareAddress();
            if (macBytes != null) {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < macBytes.length; i++) {
                    sb.append(String.format("%02X%s", macBytes[i], (i < macBytes.length - 1) ? "-" : ""));
                }
                System.out.println("当前主机的MAC地址为:" + sb.toString());
            }

            Enumeration inetAddresses = networkInterface.getInetAddresses();
            while (inetAddresses.hasMoreElements()) {
                InetAddress address = (InetAddress) inetAddresses.nextElement();
                System.out.println("当前主机的域名为:" + address.getHostName());
                System.out.println("当前主机的端口号为:" + networkInterface.getMTU());
            }
        }
    }
}

通过调用相应的方法即可获取相应的网络信息。

总结

本文从使用Inet4Address获取IP地址、使用NetworkInterface获取IP地址、使用HttpClient发送GET请求获取IP地址、使用Java获取其它网络信息等多个方面对获取当前IP地址的Java代码实现进行了详细的阐述。在实际开发中,可以根据需求选择相应的方式来获取IP地址。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/188571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-28 13:32
下一篇 2024-11-28 13:32

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • cmd看地址

    本文将从多个方面详细阐述cmd看地址,包括如何查看本机IP地址、如何查看路由器IP、如何查看DNS服务器IP等等。 一、查看本机IP地址 要查看本机IP地址,首先需要打开cmd窗口…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29

发表回复

登录后才能评论