谁知道如何获得客户端的外网IP?

xubin2468 2010-02-23 12:55:52
目前正在做一个网站,需要实现类似www.ip138.com中的IP显示功能,用了很多方法都不能达到目的,请高手赐教~谢谢!
注:我想要的是外网的IP地址(例如60.29.0.1),不是内网的(例如192.168.0.1)
...全文
627 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yang1010 2010-04-21
  • 打赏
  • 举报
回复
你好,我最近做网站也遇到这样的问题,需要获取客户端的ip地址,但是不管内网外网访问,获取的都是服务器网关地址,请问你是怎么实现的啊?
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
结贴了,虽然没有得到我想要的,但还是要感谢chdw和sggsg大力帮助,各送50~
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 17 楼 sggsg 的回复:
引用 16 楼 xubin2468 的回复:引用 13 楼 sggsg 的回复:肯定有啊,但不是我的服务器帮我访问一下试试www.tftech.cn/lantian/lookip.jsp
192.168.61.3
不知道你那是什么问题

跟我一样,这个IP是路由器的,哎~~~~
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 15 楼 chdw 的回复:
如果你指的是你服务器由于并非直接在公网上,而是由公网的网关作了地址映射才变成公网的IP与端口访问的

那么你的网关上是可以设置成保持来源的IP信息,不要修改为内网的地址。具体要看你用什么作路由

请问如何修改路由设置呢?我的硬件不太懂
钱不是问题 2010-02-23
  • 打赏
  • 举报
回复
引用 16 楼 xubin2468 的回复:
引用 13 楼 sggsg 的回复:肯定有啊,但不是我的服务器
帮我访问一下试试www.tftech.cn/lantian/lookip.jsp

192.168.61.3
不知道你那是什么问题
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 13 楼 sggsg 的回复:
肯定有啊,但不是我的服务器

帮我访问一下试试www.tftech.cn/lantian/lookip.jsp
ChDw 2010-02-23
  • 打赏
  • 举报
回复
如果你指的是你服务器由于并非直接在公网上,而是由公网的网关作了地址映射才变成公网的IP与端口访问的

那么你的网关上是可以设置成保持来源的IP信息,不要修改为内网的地址。具体要看你用什么作路由
ChDw 2010-02-23
  • 打赏
  • 举报
回复
引用 9 楼 xubin2468 的回复:
引用 5 楼 chdw 的回复:我意思是你只要将服务器和你机器不放在同一个局域网中,那么服务器上调用request.getRemoteAddress返回的就是你机器的外网IP
我的服务器和客户机并不在同一个局域网中,而request.getRemoteAddress获得的IP只是路由器的,我想要的是具体访问客户机的IP,不知我说的明白没有



www.ip138.com的实现一样是request.getRemoteAddress,因为服务器也就只能获取到这个地址

至于你服务器与ip138获取可能不一样是因为服务器所处位置不同,如果你将服务器搬到公网上(例如你服务器拨号ADSL就可以),那么两者获取到的IP是相同的
钱不是问题 2010-02-23
  • 打赏
  • 举报
回复
肯定有啊,但不是我的服务器
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 11 楼 sggsg 的回复:
引用 10 楼 xubin2468 的回复:引用 7 楼 sggsg 的回复:你访问下下面这个看,request.getRemoteAddr()获得的 http://do.jhost.cn/zzy/ 是直接放在页面里的?
是的 <%=request.getRemoteAddr() %>

你的服务器有没有用路由器啊,我的服务器有路由器还有防火墙...
钱不是问题 2010-02-23
  • 打赏
  • 举报
回复
引用 10 楼 xubin2468 的回复:
引用 7 楼 sggsg 的回复:你访问下下面这个看,request.getRemoteAddr()获得的 http://do.jhost.cn/zzy/
是直接放在页面里的?

是的<%=request.getRemoteAddr() %>
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 7 楼 sggsg 的回复:
你访问下下面这个看,request.getRemoteAddr()获得的
http://do.jhost.cn/zzy/

是直接放在页面里的?
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 5 楼 chdw 的回复:
我意思是你只要将服务器和你机器不放在同一个局域网中,那么服务器上调用request.getRemoteAddress返回的就是你机器的外网IP

我的服务器和客户机并不在同一个局域网中,而request.getRemoteAddress获得的IP只是路由器的,我想要的是具体访问客户机的IP,不知我说的明白没有
WoMaJia 2010-02-23
  • 打赏
  • 举报
回复
引用 5 楼 chdw 的回复:
我意思是你只要将服务器和你机器不放在同一个局域网中,那么服务器上调用request.getRemoteAddress返回的就是你机器的外网IP


up
钱不是问题 2010-02-23
  • 打赏
  • 举报
回复
你访问下下面这个看,request.getRemoteAddr()获得的
http://do.jhost.cn/zzy/
夜雨~听风 2010-02-23
  • 打赏
  • 举报
回复
2楼说的没错啊。。。在同一个局域网内的几台机器访问只能获取到内网IP。。若是2太处于不同网段上的机器request.getRemoteAddr()就能获取彼此的IP。
ChDw 2010-02-23
  • 打赏
  • 举报
回复
我意思是你只要将服务器和你机器不放在同一个局域网中,那么服务器上调用request.getRemoteAddress返回的就是你机器的外网IP
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 1 楼 knightzhuwei 的回复:
request.getRemoteAddr()不行么?

这个方法只能获得内网的IP
xubin2468 2010-02-23
  • 打赏
  • 举报
回复
引用 2 楼 chdw 的回复:
那是因为你自己用局域网访问自己的网站罢了,如果你在另外一个局域网中访问自己的服务器

request.getRemoteAddress()就会返回对方的外网IP,你根本拿不到对方的内网IP

我想要的是类似www.ip138.com那样的IP,你可以访问一下试试
ChDw 2010-02-23
  • 打赏
  • 举报
回复
那是因为你自己用局域网访问自己的网站罢了,如果你在另外一个局域网中访问自己的服务器

request.getRemoteAddress()就会返回对方的外网IP,你根本拿不到对方的内网IP
加载更多回复(1)

81,092

社区成员

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

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