import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.servlet.http.HttpServletRequest;
public class ToolIP {
/**
* <h5>功能:获取本地IP</h5>
* 如果没有获取到本地IP则返回0.0.0.0
*
* @return 本地IP地址
*/
public static String getLocalIpAddr() {
String localIpAddr;
try {
localIpAddr = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
localIpAddr = "0.0.0.0";
}
return localIpAddr;
}
/**
* 获取用户真实IP地址,不使用request.getRemoteAddr()的原因是有可能用户使用了代理软件方式避免真实IP地址,
* 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值
*
* @return 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");
}
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.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
}
获取IP地址工具类
原创
©著作权归作者所有:来自51CTO博客作者清风凌雪的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
获取IP地址
端点(API接口)访问获取IP地址!
IP Java SpringBoot\ -
获取客户端IP地址/本机 ip 工具类
/** * 获取客户端真实IP地址 * @param request * @return */public static String getIpAddr(HttpServletRequest request)
java 获取客户端IP地址本机 ip 获取客户端IP地址 获取本机 ip 工具类 IP -
IP地址解析工具类
QQWry.dat是显IP版QQ的数据库文件,用于获取对方IP及位置,纯真IP数据库也采用了这个格式,并沿用至今。通过ip地址解析出地理位置和服务商信息,通过网上接口也可以就是收费而且又慢。
ip地址 地址解析 qqwry.dat ipad 工具类 -
Java 获取客户端IP地址工具类
Java 获取客户端IP地址工具类。
java tcp/ip servlet ipad