java获取ip地址的几种方法

java获取ip地址的几种方法

在Java中,我们可以通过多种方法获取IP地址。在本文中,我们将介绍几种获取IP地址的方法,包括:

  1. 使用InetAddress类
  2. 使用HttpServletRequest类
  3. 使用NetworkInterface类

使用InetAddress类获取IP地址

InetAddress类提供了静态方法getLocalHost(),该方法返回一个InetAddress实例,它表示本机的IP地址。此外,InetAddress类还提供了一些其他有用的方法。

以下是获取本机IP地址的示例代码:

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

public class GetIPAddressUsingInetAddress {

    public static void main(String[] args) {
        try {
            InetAddress ip = InetAddress.getLocalHost();
            System.out.println("IP Address : " + ip.getHostAddress());
        } catch (UnknownHostException ex) {
            ex.printStackTrace();
        }
    }
}

使用HttpServletRequest类获取IP地址

HttpServletRequest是Java Servlet API中的一个接口,可以通过它来获取客户端IP地址。

以下是使用HttpServletRequest获取IP地址的示例代码:

import javax.servlet.http.HttpServletRequest;

public class GetIPAddressUsingHttpServletRequest {

    public static String getIpAddress(HttpServletRequest request) {
        String ipAddress = request.getHeader("X-Forwarded-For");
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getRemoteAddr();
        }
        return ipAddress;
    }
}

使用NetworkInterface类获取IP地址

NetworkInterface类提供了一个方法来列出所有可用的网络接口,我们可以遍历这些接口并获取每个接口的IP地址。

以下是使用NetworkInterface类获取IP地址的示例代码:

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

public class GetIPAddressUsingNetworkInterface {

    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface ni = interfaces.nextElement();
                Enumeration<InetAddress> addresses = ni.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress address = addresses.nextElement();
                    if (!address.isLinkLocalAddress() && !address.isLoopbackAddress() && address.isSiteLocalAddress()) {
                        System.out.println("IP Address: " + address.getHostAddress());
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上就是三种常见的获取IP地址的方法。使用这些方法可以轻松地获取计算机的IP地址,从而方便进行网络编程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java获取ip地址的几种方法 - Python技术站

(0)
上一篇 2023年3月29日
下一篇 2023年3月29日

相关文章

  • C语言中递归的实际应用与经典问题

    针对C语言中递归的实际应用与经典问题,以下是完整攻略。 什么是递归? 递归(Recursion)是指程序可以调用自身的编程技巧,也就是在程序执行过程中调用自身来解决问题的方式。 递归的实际应用 递归的实际应用很多,例如在树形数据结构(如二叉树、多叉树)中的遍历和查找、合并排序等。下面我们通过两个示例来说明递归的实际应用。 示例一:斐波那契数列 斐波那契数列(…

    other 2023年6月27日
    00
  • 详解Python中递归函数的原理与使用

    下面是详解Python中递归函数的原理与使用的完整攻略。 什么是递归函数 递归函数是指在函数中调用函数自身的一种编程技巧。在递归函数中,函数不断地调用自身,并且通过一定的逻辑条件来判断递归结束的条件,从而达到解决问题的目的。递归函数的实现可以让程序更加简洁高效,但同时也需要注意一些风险,比如可能因为递归层数过深导致栈溢出等问题。 递归函数的原理 递归函数的原…

    other 2023年6月27日
    00
  • 苹果手机卡住了无法重启怎么办 5种方法快速使手机恢复开机

    下面我来详细讲解“苹果手机卡住了无法重启怎么办 5种方法快速使手机恢复开机”的完整攻略。 标题 苹果手机卡住了无法重启怎么办 5种方法快速使手机恢复开机 正文 1. 硬重启 当苹果手机出现卡死无响应的情况时,这时候最常用的方法就是硬重启。硬重启是将手机电源按键和主屏幕按键同时按住,并保持3-5秒钟,直到手机屏幕黑屏后松开按键。这时候手机会自动重新开机,并回到…

    other 2023年6月27日
    00
  • Linux平台安装MongoDB及使用Docker安装MongoDB

    Linux平台安装MongoDB及使用Docker安装MongoDB 简介 MongoDB 是一个 NoSQL 数据库,它的灵活性、高效性使其成为互联网数据存储和查询的首选方案。MongoDB 具有良好的数据可扩展性,支持水平和垂直扩展。本文将介绍如何在 Linux 平台上安装 MongoDB 和使用 Docker 安装 MongoDB。 在 Linux 平…

    其他 2023年3月28日
    00
  • ubuntu如何搭建vsftpd服务器

    Ubuntu搭建vsftpd服务器攻略 1. 安装vsftpd 首先,我们需要在Ubuntu上安装vsftpd软件包。打开终端并执行以下命令: sudo apt update sudo apt install vsftpd 2. 配置vsftpd 2.1 修改配置文件 打开vsftpd的配置文件/etc/vsftpd.conf,可以使用任何文本编辑器进行编辑…

    other 2023年8月3日
    00
  • php实现Session存储到Redis

    实现Session存储到Redis的步骤如下: 首先安装Redis扩展: pecl install redis 然后,在php.ini文件中添加Redis扩展: extension=redis.so 接着,创建session文件,并且让PHP使用Redis作为session存储方式。可以在php代码中使用ini_set函数来设置: ini_set(‘sess…

    other 2023年6月27日
    00
  • AngularJS $on、$emit和$broadcast的使用

    AngularJS $on、$emit和$broadcast的使用攻略 AngularJS提供了三个重要的事件传播机制:$on、$emit和$broadcast。这些机制允许在应用程序的不同部分之间进行事件通信。下面是它们的详细说明和使用示例。 $on $on方法用于在当前作用域中监听一个事件。当事件被触发时,注册的回调函数将被执行。以下是$on的语法: $…

    other 2023年8月20日
    00
  • cmd Tasklist与Tskill管理Windows系统进程

    下面我将详细讲解如何使用“cmd Tasklist与Tskill”管理Windows系统进程。 一、Tasklist命令 Tasklist命令用来列出当前正在运行的进程,可以通过以下语法来使用: tasklist [/s <计算机名> [/u [<域>\]<用户名> [/p [<密码>]]]] [/m [&lt…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部