java 获取ip
2016-01-07 21:27
543 查看
package com.qbao.bbs.util; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; /** * IP工具类 * * @author shenrongrong * @version [版本号, 2016年1月7日] * @see [相关类/方法] * @since [产品/模块版本] */ public class IpUtil { /** * @param request 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; } } }
相关文章推荐
- 从头认识java-17.1 为什么需要并发?
- Sturts2拦截器的应用Interceptor
- SpringMVC配置
- ubuntu 15.10 安装jdk
- Set,List,Map的区别 Set(集) List(列表) Map(映射)
- Struts2文件下载
- Struts2文件下载
- Spring——JDBC模版编程
- java.lang.NoClassDefFoundError:jxl.Workbook
- Java中的工具类和新特性
- java 接口引用指向对象 / 工厂模式
- java 解析xml 递归算法 简单实用
- Java基础:定时器Timer
- 字符排序
- java的递归任务和分治算法实现大数组数据求和
- java date最常用的时间格式化
- 【Spring】Spring学习笔记-01-入门级实例
- eclipse maven搭建
- Spring 配置XML文件头部文件格式
- java运算符优先级