java获取当前机器的公网ip

package com.Interface.util;

import javax.servlet.http.HttpServletRequest;

/**
 * 测试类
 *
 * @author 华文
 * @date 2019年7月5日
 * @version 1.0
 */
public class Test {

    /**
     * 获取当前公网ip
     */
    public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
            // 多次反向代理后会有多个ip值,第一个ip才是真实ip
            if (ip.indexOf(",") != -1) {
                ip = ip.split(",")[0];
            }
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
            System.out.println("Proxy-Client-IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
            System.out.println("WL-Proxy-Client-IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_CLIENT_IP");
            System.out.println("HTTP_CLIENT_IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
            System.out.println("HTTP_X_FORWARDED_FOR ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-IP");
            System.out.println("X-Real-IP ip: " + ip);
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
            System.out.println("getRemoteAddr ip: " + ip);
        }
        return ip;
    }
}

原文地址:https://www.cnblogs.com/w1441639547/p/11176968.html

时间: 2024-08-02 18:35:35

java获取当前机器的公网ip的相关文章

JAVA获取访问用户的客户端IP(适用于公网与局域网)

/** * 获取访问用户的客户端IP(适用于公网与局域网). */ public static final String getIpAddr(final HttpServletRequest request) throws Exception { if (request == null) { throw (new Exception("getIpAddr method HttpServletRequest Object is null")); } String ipString = r

java获取本机器的IP(linux和windows)

[toc] 描述 由于项目是部署在集群上的,需要项目能够自动采集各机器的信息.java.net.InetAddress.getLocalHost()来获取本地机器的IP和机器名信息,但发现在linux下并不能获取到机器的实际IP和机器名信息(获取到的是localhost/127.0.0.1). 方案描述 根据系统类型(linux.windows)来通过不同的方式获取本地机器的IP信息. 获取Windows下的IP java.net.InetAddress.getLocalHost().getHo

Java获取请求客户端的真实IP地址

Java获取请求客户端的真实IP地址 Java,获取客户端的IP地址的方法: request.getRemoteAddr() 这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了; 如果使用了反向代理软件,将http://192.168.1.110:2046 的URL反向代理为 http://www.javapeixun.com.cn的URL时, 用 request.getRemoteAddr() 方法获取的IP地址是:127.0

java获取本机名称、IP、MAC地址和网卡名称

java获取本机名称.IP.MAC地址和网卡名称 摘自:https://blog.csdn.net/Dai_Haijiao/article/details/80364370 2018年05月18日 14:53:19 阅读数:134 import java.net.InetAddress; import java.net.NetworkInterface; public class IpConfig { @SuppressWarnings("static-access") public

多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.

获取当前Server的公网IP地址,并邮件发送

#mail server configuration $smtpServer = "smtp.XXXX.com" $smtpuser = "[email protected]" $smtpPassword = "Oa123456" #Create the mail message  $mail = New-Object System.Net.Mail.MailMessage #Set the Addresses $mailaddress = &q

java 获取的是本地的IP地址

1 public static void main(String[] args) { 2 try { 3 InetAddress address = InetAddress.getLocalHost();//获取的是本地的IP地址 //PC-20140317PXKX/192.168.0.121 4 String hostAddress = address.getHostAddress());//192.168.0.121 5 InetAddress address1 = InetAddress.

通过whois查询APNIC获取三大运营商公网IP段

引言: 自从中国电信拆分成北网通.南电信以后,开始了各自资源的垄断.成就了目前这种互联不互通的奇怪局面,连信产部都无能为力.为了解决南北互联互通的问题,开始出现了智能DNS,这需要准确的知道电信和网通及其它运营商的IP分段情况. 一般有如下两种办法可以得到各运营商的IP段:1 通过导出各BGP路由器的路由表,得到各运营商的IP段.2 通过whois查询APNIC数据库信息.APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的! 下面就让我们看看如

如何使用PowerShell实时获取自己的公网IP地址

又是不知道多久没更新过博客了,这篇其实早就想好了要写不过一拖就是几个月,最近拖延症真是疯狂爆发了.先说一下今天想写什么吧,其实很简单,就是如何使用PowerShell来实时的获取一台计算机的公网IP地址.公网IP是什么就不需要说了,实时获取公网IP的意义在于什么呢? 首先来说一下这篇文章的背景,家里有一台台式机因为各种各样的原因经常整天或者整星期的开机(做实验或者挂机等等),很多时候在单位想看看家里的情况如何或者想做做实验都需要远程连回去,连回去的方法不外乎那么几种,一个是通过Remote De