日期:2014-05-18  浏览次数:20661 次

jsp 中如何取得客户端真实ip地址
jsp   中如何取得客户端真实ip地址
如果是局域网中的客户端则得到网关ip

------解决方案--------------------
req.getRemoteHost()

------解决方案--------------------
学习
------解决方案--------------------
期待達人
------解决方案--------------------
你只能获取到最后一次路由的IP~如果有人用代理访问你的JSP你是没办法获得他真实的IP的,只能获得代理的IP~
------解决方案--------------------
jpcap
------解决方案--------------------
req.getRemoteHost() 怎么可能获得局域网呢?你放到公网上试试看

而且jsp也只能搞到这个了,说到底原理也过是http协议还是基于TCP的,TCP则可以获取客户端IP而已。你说的ip.cn可能自己搞个数据库,去搜索对应的ISP而已。
------解决方案--------------------
中间用apache了吗?
如果用了请获取这两个参试试

out.print( "your ip: " +request.getRemoteAddr());
out.print( "your ip: " +request.getHeader( "x-forwarded-for "));
------解决方案--------------------
沒有辦法的
------解决方案--------------------
如果是客户端获取自己的地址
可以用location.host
------解决方案--------------------
楼主,如果你在局域网内,http://ip.cn显示的是你的代理的ip地址。我试过,我用了一个印度的代理,结果显示我是来自印度,这个ip就是印度那个代理的ip。
没有办法获得用户真正的ip地址,除非:
你在你的客户写特殊代码获取了用户机器的ip发送回去。
------解决方案--------------------
取http://ip138.com的首頁文字信息,上面有你的IP地址,可以解析出來。
------解决方案--------------------
request.getRemoteAddr()

通过这个方法可以得到
------解决方案--------------------
不可能的,这个request.getRemoteAddr()一定行,我在用的
------解决方案--------------------
<%@ page contentType= "text/html; charset=GBK " %>


<%

String clientIP = " ";

try {

java.net.NetworkInterface iface = null;
StringBuffer sb = new StringBuffer( " ");
for (java.util.Enumeration ifaces = java.net.NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements(); ) {
System.out.print( "进入循环\n ");
iface = (java.net.NetworkInterface) ifaces.nextElement();
java.net.InetAddress ia = null;
for (java.util.Enumeration ips = iface.getInetAddresses(); ips.hasMoreElements(); ) {
System.out.print( "进入子循环\n ");
ia = (java.net.InetAddress) ips.nextElement();
sb.append(ia.getHostAddress()+ ": ");
}
}
System.out.print( "马上输出\n ");
clientIP = sb.toString();
System.out.println( " "+clientIP+ " \n ");
String s[]=clientIP.split( ": ");
if(s.length> 1)
out.print(s[s.length-1].toString());
else
out.print(s[0].toString());
String s1=s[0];
out.print( " <br> "+s1+ " <br> ");
}
catch (Exception e)
{
e.printStackTrace();
}

%>

支持代理。
------解决方案--------------------
request.getRemoteAddr()
------解决方案--------------------