`

IPUtil工具类,获取本机、远程IP

    博客分类:
  • Java
 
阅读更多
http://my.oschina.net/yongyi/blog/498781
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
  
import javax.servlet.http.HttpServletRequest;
  
/**
 * IP工具类
 * @author geeksun
 * 2011-9-23
 */
public class IpUtil {
  
    /**
     * @param 获取远程IP
     * @return IP Address
     */
    public static String getIpAddrByRequest(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
      
    /**
     * @return 获取本机IP
     * @throws SocketException
     */
    public static String getRealIp() throws SocketException {
        String localip = null;// 本地IP,如果没有配置外网IP则返回它
        String netip = null;// 外网IP
  
        Enumeration<NetworkInterface> netInterfaces = 
            NetworkInterface.getNetworkInterfaces();
        InetAddress ip = null;
        boolean finded = false;// 是否找到外网IP
        while (netInterfaces.hasMoreElements() && !finded) {
            NetworkInterface ni = netInterfaces.nextElement();
            Enumeration<InetAddress> address = ni.getInetAddresses();
            while (address.hasMoreElements()) {
                ip = address.nextElement();
                if (!ip.isSiteLocalAddress() 
                        && !ip.isLoopbackAddress() 
                        && ip.getHostAddress().indexOf(":") == -1) {// 外网IP
                    netip = ip.getHostAddress();
                    finded = true;
                    break;
                } else if (ip.isSiteLocalAddress() 
                        && !ip.isLoopbackAddress() 
                        && ip.getHostAddress().indexOf(":") == -1) {// 内网IP
                    localip = ip.getHostAddress();
                }
            }
        }
      
        if (netip != null && !"".equals(netip)) {
            return netip;
        } else {
            return localip;
        }
    }
      
}
分享到:
评论

相关推荐

    IpUtil工具类--通过request获取IP,通过IP获取地址

    IpUtil工具类--通过request获取IP,通过IP获取地址(需要联网,调用淘宝的IP库)。使用场景:在网站开发记录用户增删改查日志的时候,往往需要记录操作人的IP地址,来准确的生成操作日志记录等

    本机IP查询工具.bat

    本机IP查询工具是一种用于查询计算机本地IP地址的工具。它可以帮助用户轻松地获取本机的IP地址、子网掩码、默认网关、DNS服务器等信息。...总之,本机IP查询工具是一种非常实用的工具,可以帮助用户轻松地获取.

    java 获取ip 工具类 java 获取ip 工具类

    java 获取ip 工具类 java 获取ip 工具类 java 获取ip 工具类 java 获取ip 工具类 java 获取ip 工具类 java 获取ip 工具类 java 获取ip 工具类 java 获取ip 工具类

    工具类-获取访问ip地址工具类,自用留存

    本案例中的"工具类-获取访问ip地址工具类,自用留存"是一个专门用于获取网络访问IP地址的Java工具类。这个工具类可能包含了一些方法,用于在不同的网络环境中准确地获取到客户端的IP地址,这对于网络应用的统计分析...

    iputil工具代码

    从给定的文件信息来看,我们正在探讨的是一个名为`IpUtil`的Java类,它主要功能是实现IP地址(IPv4)与十进制整数之间的相互转换。这一工具在许多网络编程场景中非常实用,例如在网络设备管理、网络安全、IP地址池...

    C# .Net 设置固定IP、测试端口、获取本机ip、ping 地址。

    获取本机IP 设置本机IP配置为自动获取或者手动设置 测试端口是否可访问 Ping IP 功能实现通过用Socket类、Process类、来调用命令行程序测试和Socket访问端口。 温习知识写的小工具,如果有bug,那么理解万岁

    双击我获取本机IP+MAC+计算机名 最终版.bat

    获取本机IP+MAC+计算机名,多网卡情况下自动识别主网卡信息

    IPUtil.java

    今天在本地虚拟机测试某个功能,其中有个环节是获取本机的IP,然后向中心服务器注册,通过日志发现本机IP获取出来的是一个172开头的特殊的IP:172.17.0.1。奇怪。。。 分析: 172.17.0.1这个IP是我之前在这台虚拟机...

    NSIS获取本机IP地址写入配置文件

    NULL 博文链接:https://lzquan.iteye.com/blog/339618

    获得本机IP地址

    获取本机IP地址有助于诊断网络问题、配置路由器设置或连接到远程服务器。 **2. ** **Delphi环境与MyIP项目:** Delphi是一款流行的Windows应用程序开发工具,支持快速开发桌面应用。MyIP项目包含多个文件,其中...

    根据ip获取对应城市.rar

    标题中的“根据ip获取对应城市.rar”提示我们这是一个关于通过IP地址识别地理位置的Java项目,主要功能是查询IP地址对应的城市信息。描述中提到“java根据个人ip,获取ip对应的城市”,确认了这一点,并且强调它还...

    Windows 使用QT读取IP地址并修改IP地址

    在Windows系统中,使用Qt框架进行网络编程时,获取和修改IP地址是常见的需求。本文将详细介绍如何通过Qt的QNetworkInterface、IPHlpApi库以及QSettings读取注册表来读取IP地址,并且会讲解如何利用netsh命令行工具来...

    佳博修改ip工具.rar

    - 多店铺连锁:当有多家分店使用同一品牌小票机时,通过修改IP工具可以统一管理,便于远程监控和维护。 - 云打印服务:通过设置固定IP,小票机可以接入云打印平台,实现远程订单打印。 - 系统集成:在企业内部...

    Http请求Restful风格的远程调用工具类

    Http请求Restful风格的远程调用,在远程调用的过程中会出现四种请求方式,这个工具把此部分代码给封装了一下。

    树莓派自动获取ip工具

    树莓派(Raspberry Pi)是一...总的来说,"树莓派自动获取IP工具"是一个实用的小程序,它简化了树莓派用户获取和管理IP地址的过程,让远程操作变得更加便捷。对于初学者和经验丰富的开发者而言,都是一个值得拥有的工具。

    如何获得对方主机IP地址?

    这类工具如“WhereIsIP”可以帮助您快速定位目标Web站点的IP地址及其地理位置。只需输入目标网站的域名,工具即可返回该网站的IP地址以及所在位置。这种方式尤其适用于网络管理员和安全研究人员,能够快速判断网站...

    ip纯真数据库与解析工具类

    资源包括一个IP纯真数据库文件,还有一个Java工具类,可以使用工具类查找对应IP的省市还有运营商,纯真数据库文件也可以自己下载最新的,或者安装纯真数据库获取最新版本,工具主要是解析纯真数据库文件,方便批量...

    IPFinder蓝色星际摄像机IP搜索工具

    《IPFinder:蓝色星际摄像机IP搜索工具深度解析》 在现代安防系统中,网络摄像头扮演着至关重要的角色,它们提供了实时监控、录像回放以及远程访问等多种功能。蓝色星际作为一家知名的安防设备制造商,其产品线涵盖...

    【强2】30个java工具类

    [工具类] 获取绝对路径 .java.txt [工具类] 记录log日志文件的工具类 .java.txt [工具类] 连接数据库的工具类 .java.txt [工具类] 使用Java程序来实现HTTP文件的队列下载 .java.txt [工具类] 文件操作工具类 .java....

    java RestTemplate 远程调用工具类

    java RestTemplate 远程调用工具类java RestTemplate 远程调用工具类java RestTemplate 远程调用工具类java RestTemplate 远程调用工具类java RestTemplate 远程调用工具类java RestTemplate 远程调用工具类

Global site tag (gtag.js) - Google Analytics