MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » jsp 中怎么取得客户端真实ip地址

jsp 中怎么取得客户端真实ip地址(2)

www.MyException.Cn  网友分享于:2013-01-22  浏览:150次

上面的语句没一个可行的,不信你去试
原因很简单:
第一:如果客户端是使用代理上网,只能获取其代理IP
第二:如果用户是使用ADSL拨号上网,只能获取其拨号的临时IP(内网IP无法获取,比如192.168.1.55之类的)
第三:如果使用路由上的,也不能获取其内网IP,只能获取做路由的一个公网IP

我不清楚你要的是什么IP地址,但是有一点可以确认,你不能获取他的内网IP地址,除了他是用拨号上网的PC机之外的IP有用,其他的IP你获取了也没有意义。

建议看看网络协议。。。
目前IP6段的快出来了,不知道那时候会不会能获取其IP。
------解决方案--------------------
根本搞不清楼主想要什么

> 目前IP6段的快出来了,不知道那时候会不会能获取其IP。

IPv6出来了,也没办法达到楼主的要求。反正楼主就是想和http://ip.cn一样的效果,那就直接用这个网站的功能得了。用ajax让客户端访问http://ip.cn,并把结果偷下来

function getIP() {
var xhr = new ActiveXObject( "Microsoft.XMLHTTP ");
xhr.open( "POST ", "http://ip.cn ", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var html = xhr.responseText;
var regex = new RegExp( "\ "ip\\.php\\?q=(\\d+\\.\\d+\\.\\d+\\.\\d+)\ " ");
var m = regex.exec(html);
var ip = m[1];
alert( "您的IP是: "+ip);
}
};
xhr.send();
}
------解决方案--------------------
import java.io.*;

public class Test1 {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec( "ipconfig /all ");
InputStreamReader ir = new InputStreamReader(process.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String line;
while ((line = input.readLine()) != null)
if (line.indexOf( "IP Address ") > 0) {
String IPAddress = line.substring(line.indexOf( "- ") - 2);//得到IP地址
System.out.println( "IPAddress = [ " + IPAddress + "] ");
}
if (line.indexOf( "DHCP Server ") > 0) {
String DHCPServer= line.substring(line.indexOf( "- ") - 2);//得到网关IP
System.out.println( "DHCPServer= [ " + DHCPServer+ "] ");
}
} catch (java.io.IOException e) {
System.err.println( "IOException " + e.getMessage());
}
}
}
这样就行了,这个JAVA文件你先在CMD下命令看是不是可以得到IP
String IPAddress = line.substring(line.indexOf( "- ") - 2);这里你位置你自己调正一下,可能不是 "-2 ",还有是用在网页上要把System.out.println( "DHCPServer= [ " + DHCPServer+ "] ");改为RETURN才行
------解决方案--------------------
<%
String realIP=request.getHeader( "x-forwarded-for ");
if (realIP !=null&&realIP.length() !=0){
while((realIP!=null)&&(realIP.equals( "unknown "))){
realIP = request.getHeader( "x-forwarded-for ");
}
}
if(realIP == null || realIP.length() == 0){
realIP = request.getHeader( "Proxy-Client-IP ");
}
if(realIP == null || realIP.length() == 0){
realIP = request.getHeader( "WL-Proxy-Client-IP ");
}
if(realIP==null || realIP.length() == 0){
realIP=request.getRemoteAddr();
}
out.print(realIP);
%>

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有