从JSP中得到访问者的真实IP(很急)!

xuhua205 2010-03-17 02:16:47
现在手头开发一个网站,有这么一个功能,就是根据访问者的IP自动显示访问者所在的区域;
现在遇到了一问题,我得到客户端IP的代码如下:


public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}



该代码得到的结果如下:
1.如果应用发布到局域网,在局域网内访问,得到的是我局域网的IP,如: 192.168.0.2
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段

我现在就是想在第二种情况下能够得到访问者的外网ip,请问各位有什么高招?
...全文
571 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mon213 2012-06-03
  • 打赏
  • 举报
回复
请问怎么使用它啊??
czmchen 2010-03-19
  • 打赏
  • 举报
回复
我代码和LZ的一样,我的系统都是用它,可是都没什么问题!
xuhua205 2010-03-19
  • 打赏
  • 举报
回复
呵呵,强悍不能达到目的也是不行滴!
问题找出来了,用我的给的代码是可以地,只是因为服务器那边配置了集群,每次得到的是负载均衡的机器IP
CSND用户 2010-03-18
  • 打赏
  • 举报
回复
request.getRemoteAddr() 这个够强悍...

干嘛要写那么一大堆 楼主你不累?
nmgrlq 2010-03-18
  • 打赏
  • 举报
回复
request.getRemoteAddr()
就可以啊
zhuangwei517 2010-03-17
  • 打赏
  • 举报
回复
request.getRemoteAddr() 方法即可以得到访问者的IP
hjjk123 2010-03-17
  • 打赏
  • 举报
回复
关注中..................
xusheng1018 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chdw 的回复:]
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段


这个是因为你的服务器还不是直接在外网上,应该是服务器还有前置的路由,是路由做了地址映射后才访问到你机器的


这个不清楚你用什么路由转发的,像Windows都会有配置要求传递真实的IP的
[/Quote]

我也学习了!
xuhua205 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chdw 的回复:]
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段


这个是因为你的服务器还不是直接在外网上,应该是服务器还有前置的路由,是路由做了地址映射后才访问到你机器的


这个不清楚你用什么路由转发的,像Windows都会有配置要求传递真实的IP的
[/Quote]
那就是说我每次得到的实际上是服务器路由的IP了,难怪无论谁访问都是192.168.198.1,那这个貌似没办法解决了啊
orangemike 2010-03-17
  • 打赏
  • 举报
回复
你提的这个要求貌似很难.
fireelf000 2010-03-17
  • 打赏
  • 举报
回复
request.getRemote()获取到的IP是什么IP,汗一个,还真的没注意过
gulang76 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chdw 的回复:]

2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段


这个是因为你的服务器还不是直接在外网上,应该是服务器还有前置的路由,是路由做了地址映射后才访问到你机器的


这个不清楚你用什么路由转发的,像Windows都会有配置要求传递真实的IP的
[/Quote]

学习了
ChDw 2010-03-17
  • 打赏
  • 举报
回复
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段


这个是因为你的服务器还不是直接在外网上,应该是服务器还有前置的路由,是路由做了地址映射后才访问到你机器的


这个不清楚你用什么路由转发的,像Windows都会有配置要求传递真实的IP的
源码下载地址: https://pan.quark.cn/s/0d6e3002ba51 ### IR2110文资料知识点详述 #### 一、概述 IR2110是一种专为脉冲宽度调制应用而设计的高性能驱动集成电路,在各类功率转换设备具有广泛的应用,特别是在需要实现隔离驱动的场景下表现出色。该芯片融合了光电隔离与电磁隔离的优势,能够达成快速响应并保持较小的物理尺寸,尤其适合用于小功率的变换装置。 #### 二、IR2110内部结构与特点 **1. 内部结构** - **封装形式**:采用DIP14引脚封装。 - **内部组成**:由逻辑输入单元、电平平移单元以及输出保护单元这三个主要部分构成。 - **悬浮电源**:借助自举电路实现,使得高端工作电压最高能够达到500V,支持±50V/ns的电压变化率。 - **工作电压范围**:逻辑电源电压范围为5~15V,输出电源端电压范围为10~20V,易于与其他逻辑电平进行匹配。 - **工作频率**:最高可达到500kHz。 - **功耗**:在15V条件下静态功耗仅为116mW。 - **延迟时间**:导通延迟120ns,关断延迟94ns。 - **峰值输出电流**:图腾柱输出峰值电流为2A。 **2. 特点** - **独立输入通道**:具备独立的低端和高端输入通道配置。 - **兼容性**:逻辑电源地与功率地之间允许±5V的偏移量,便于与TTL或CMOS电平进行匹配。 - **自举电源**:内置自举电源电路,有效减少驱动电源的数量,从而简化电路设计。 - **高dv/dt能力**:具有较强的dv/dt抑制能力,适合高频开关应用。 - **低功耗**:工作状态下功耗较低,有利于提升整体效率。 #### 三、高压侧...

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧