JSP获取客户端IP地址的问题

keer2345 2009-08-21
我用request.getRemoteAddr()来获取ip,可是通过互联网在客户端访问之后,显示出来的都是服务器的ip地址 。

但是如果我使用内网方式(http://192.168.1.1/index.jsp)访问的话,显示出来的就是本机的内网IP。


而我希望获取的是客户端在公网的IP地址。
这个问题怎么决绝呢, 老困扰着我。谢谢
changefeng 2009-09-18
这个我只知道 获得Ip地址 在我博客那里具体我也不是很清楚
7454103 2009-09-25
request.getRequestURL()
试试!
7454103 2009-09-25
客户使用的协议是:
      <% String protocol=request.getProtocol();
      out.println(protocol);%>
      <BR>
      获取接受客户提交信息的页面:
      <% String path=request.getServletPath();
      out.println(path);%>
      <BR>
      接受客户提交信息的长度:
      <% int length=request.getContentLength();
      out.println(length);%>
      <BR>
      客户提交信息的方式:
      <% String method=request.getMethod();
      out.println(method); %>
      <BR>
      获取HTTP头文件中User-Agent的值::
      <% String header1=request.getHeader("User-Agent");
      out.println(header1);   %>
      <BR>
      获取HTTP头文件中accept的值:
      <% String header2=request.getHeader("accept");
      out.println(header2);%>
      <BR>
      获取HTTP头文件中Host的值:
      <% String header3=request.getHeader("Host");
      out.println(header3);%>
      <BR>
      获取HTTP头文件中accept-encoding的值:
      <% String header4=request.getHeader("accept-encoding");
      out.println(header4);%>
      <BR>
      获取客户的IP地址:
      <% String IP=request.getRemoteAddr();
      out.println(IP);%>
      <BR>
      获取客户机的名称:
      <% String clientName=request.getRemoteHost();
      out.println(clientName);%>
      <BR>
      获取服务器的名称:
      <% String serverName=request.getServerName();
      out.println(serverName);%>
      <BR>
      获取服务器的端口号:
      <% int serverPort=request.getServerPort();
      out.println(serverPort);%>
      <br>
      获得服务器IP:
liupesnap 2009-10-02
7454103 写道
客户使用的协议是:
      <% String protocol=request.getProtocol();
      out.println(protocol);%>
      <BR>
      获取接受客户提交信息的页面:
      <% String path=request.getServletPath();
      out.println(path);%>
      <BR>
      接受客户提交信息的长度:
      <% int length=request.getContentLength();
      out.println(length);%>
      <BR>
      客户提交信息的方式:
      <% String method=request.getMethod();
      out.println(method); %>
      <BR>
      获取HTTP头文件中User-Agent的值::
      <% String header1=request.getHeader("User-Agent");
      out.println(header1);   %>
      <BR>
      获取HTTP头文件中accept的值:
      <% String header2=request.getHeader("accept");
      out.println(header2);%>
      <BR>
      获取HTTP头文件中Host的值:
      <% String header3=request.getHeader("Host");
      out.println(header3);%>
      <BR>
      获取HTTP头文件中accept-encoding的值:
      <% String header4=request.getHeader("accept-encoding");
      out.println(header4);%>
      <BR>
      获取客户的IP地址:
      <% String IP=request.getRemoteAddr();
      out.println(IP);%>
      <BR>
      获取客户机的名称:
      <% String clientName=request.getRemoteHost();
      out.println(clientName);%>
      <BR>
      获取服务器的名称:
      <% String serverName=request.getServerName();
      out.println(serverName);%>
      <BR>
      获取服务器的端口号:
      <% int serverPort=request.getServerPort();
      out.println(serverPort);%>
      <br>
      获得服务器IP:


如果是内网用户 那获取到得IP是不是这个内网的出口Ip? 我想到一种 能不能用js在页面加载时获取后 再用ajax传过来 没有试过这个方法哈 总之不可能用到像QQ那样的局域网穿透技术吧 呵呵
Global site tag (gtag.js) - Google Analytics