java获取ip为0:0:0:0:0:0:0:1的问题【转】
2016-12-06 11:37
274 查看
java获取ip为0:0:0:0:0:0:0:1的问题【转】
0:0:0:0:0:0:0:1是ipv6的表现形式,对应ipv4来说相当于127.0.0.1,也就是本机如果项目部署在本机win7系统,访问时是通过 localhost 来访问,
用java获取ip地址可能会出现该问题,这时获取的ip将是 0:0:0:0:0:0:0:1
要是机器在局域网中,访问时使用自己的ip访问,如 我的ip是 :192.168.123.156
访问url:http://192.168.123.156:8080/test
这时候请求会经过路由器转发,所以服务器获取的就是本机的局域网内ip,在java中获取的ip就是 192.168.123.156了
下面几个获取ip的方法:
public static String getIP(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (!checkIP(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (!checkIP(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (!checkIP(ip)) { ip = request.getRemoteAddr(); } return ip; } private static boolean checkIP(String ip) { if (ip == null || ip.length() == 0 || "unkown".equalsIgnoreCase(ip) || ip.split(".").length != 4) { return false; } return true; }
原文地址:http://blog.csdn.net/leoz0802/article/details/6364565
另一篇:http://java161.iteye.com/blog/1189279
request.getRemoteAddr() 获取的值为0:0:0:0:0:0:0:1的原因及解决办法
最近在进行web开发时,在jsp页面获取服务器ip时,遇到了request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1,这是为什么呢,照道理讲,应该是127.0.0.1才对,为什么这个获取的值变成了ipv6了呢,而且我发现这种情况只有在服务器和客户端都在同一台电脑上才会出现(例如用localhost访问的时候才会出现),后来上网查了查原因,原来是/etc/hosts这个东西作怪(在windows上应该是C:\Windows\System32\drivers\etc\hosts这个文件),只需要注释掉文件中的
# ::1 localhost 这一行即可解决问题。另外localhost这个文件很有用,这里你可以添加自己的条目,例如添加 192.168.0.212 myweb 这样子,在浏览器中原来只能使用192.168.0.212来访问的,并可以使用myweb来进行替换。
如果还不能解决,本机访问的时候用127.0.0.1或本机ip代替localhost即可解决
标签: java
相关文章推荐
- Java 获取客户端ip返回127.0.0.1问题
- 处理java获取ip为0:0:0:0:0:0:0:1的问题
- Java 获取客户端ip返回127.0.0.1问题
- apache代理时java获取IP的问题
- Java获取客户端IP(解决苹果和安卓版的微信客户端IP问题)
- 关于Java获取本地服务器IP的问题
- 域名中ip和端口的问题,java通过域名获取ip
- 主机上有多个网卡用java指定获取某一个网卡ip的问题
- Java]JAVA获取相对路径问题的解决
- Java获取IP并存储数据库
- 解决JAVA获取Windows系统时间问题
- 网络连接不能获取IP问题解决
- java类中 获取服务器的IP 端口
- Java 获取Windows 和 Linux 下 IP 机制
- 2.Debian5.0 dhcp 自动获取ip 上网问题
- 二、java获取本机ip地址
- java 获取本地的或者外网的IP
- Java 获取路径 中文问题
- 用java获取本机IP地址
- linux java/jsp 获取系统当前时间问题