2012-03-03 89 views
1

我一直在尝试使用下面的代码来获得用户的IP和我得到这个输出。如何获取访问网站网址的用户ip?

InetAddress.getLocalHost()的gethostname():ANKUR-PC

InetAddress.getLocalHost()getHostAddress ():10.0.0.2

request.getLocalAddr():0.0.0.0

request.getLocalName():0.0.0.0

request.getRemoteAddr():0: 0:0:0:0:0:0:1

request.getRemoteHost():0:0:0:0:0:0:0:1个

request.getHeader(“代理客户端-IP “):空

request.getHeader(” WL-代理客户端IP “):空

request.getHeader(” X转发-FOR“):空

的InetAddress。 getByName(request.getHeader(“X-FORWARDED-FOR”)): localhost/127.0.0.1

InetAddress.getByName(request.getRemoteAddr()):/ 0:0:0:0:0:0:0:1

InetAddress.getByName(request.getRemoteHost()):/ 0:0:0 :0:0:0:0:1

我不知道它的正确与否。请给我一些建议,因为我是新手。

/* 
* getClientIP.java 
* 
* Created on July 9, 2011, 12:13 AM 
*/ 

//package org.com.testing; 

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.net.*; 



public class getClient extends HttpServlet { 

    // Translation translation = new Translation(); 

    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. 
    * @param request servlet request 
    * @param response servlet response 
    */ 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     HttpSession session = request.getSession(); 
     PrintWriter out = response.getWriter(); 

     out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); 
     out.println("<html>"); 
     out.println("<!-- Copy right 2009-2012 Redecis Systems Inc. All Rights Reserved. -->"); 
     out.println("<head>"); 
     out.println("<title>::: Redecis Systems :::</title>"); 
     out.println("<meta http-equiv=\"pragma\" content=\"no-cache\">"); 
     out.println("<meta http-equiv=\"expires\" content=\"0\">"); 
     out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"); 
     out.println("<meta name=\"Author\" CONTENT=\"Kevin\">"); 
     out.println("<link rel=\"stylesheet\" href=\"JS/Standar.css\" type=\"text/css\">"); 
     out.println("<script type=\"text/javascript\" src=\"JS/Standar.js\" language=\"JavaScript\"></script>"); 
     out.println("</head>"); 
     out.println("<body>"); 

     out.println("<table width=\"100%\" height=\"100%\" cellpadding=\"0\" cellspacing=\"0\">"); 
     out.println("<tr>"); 
     out.println("<td align=\"center\" valign=\"middle\">"); 

     out.println("<table class=\"tableBorder\" width=\"50%\" height=\"35%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"> "); 
     out.println("<tr>"); 
     out.println("<td>"); 

     out.println("<table class=\"darkBlue\" width=\"100%\" border=\"0\" align=\"center\" cellpadding=\"5\" cellspacing=\"0\"> "); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">InetAddress.getLocalHost().getHostName():</td>"); 
     out.println("<td align=\"left\">" + InetAddress.getLocalHost().getHostName() + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">InetAddress.getLocalHost().getHostAddress():</td>"); 
     out.println("<td align=\"left\">" + InetAddress.getLocalHost().getHostAddress() + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td width=\"65%\" align=\"right\">request.getLocalAddr():</td>"); 
     out.println("<td width=\"35%\" align=\"left\">" + request.getLocalAddr() + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">request.getLocalName():</td>"); 
     out.println("<td align=\"left\">" + request.getLocalName() + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td width=\"65%\" align=\"right\">request.getRemoteAddr():</td>"); 
     out.println("<td width=\"35%\" align=\"left\">" + request.getRemoteAddr() + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">request.getRemoteHost():</td>"); 
     out.println("<td align=\"left\">" + request.getRemoteHost() + "</td>"); 
     out.println("</tr>"); 


     out.println("<tr>"); 
     out.println("<td align=\"right\">request.getHeader(\"Proxy-Client-IP\"):</td>"); 
     out.println("<td align=\"left\">" + request.getHeader("Proxy-Client-IP") + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">request.getHeader(\"WL-Proxy-Client-IP\"):</td>"); 
     out.println("<td align=\"left\">" + request.getHeader("WL-Proxy-Client-IP") + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">request.getHeader(\"X-FORWARDED-FOR\"):</td>"); 
     out.println("<td align=\"left\">" + request.getHeader("X-FORWARDED-FOR") + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">InetAddress.getByName(request.getHeader(\"X-FORWARDED-FOR\")):</td>"); 
     out.println("<td align=\"left\">" + InetAddress.getByName(request.getHeader("X-FORWARDED-FOR")) + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">InetAddress.getByName(request.getRemoteAddr()):</td>"); 
     out.println("<td align=\"left\">" + InetAddress.getByName(request.getRemoteAddr()) + "</td>"); 
     out.println("</tr>"); 

     out.println("<tr>"); 
     out.println("<td align=\"right\">InetAddress.getByName(request.getRemoteHost()):</td>"); 
     out.println("<td align=\"left\">" + InetAddress.getByName(request.getRemoteHost()) + "</td>"); 
     out.println("</tr>"); 

     out.println("</table>"); 

     out.println("</td>"); 
     out.println("</tr>"); 
     out.println("</table>"); 

     out.println("</td>"); 
     out.println("</tr>"); 
     out.println("</table>"); 

     out.println("</head>"); 
     out.println("</body>"); 
     out.close(); 
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
    /** Handles the HTTP <code>GET</code> method. 
    * @param request servlet request 
    * @param response servlet response 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** Handles the HTTP <code>POST</code> method. 
    * @param request servlet request 
    * @param response servlet response 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** Returns a short description of the servlet. 
    */ 
    public String getServletInfo() { 
     return "Short description"; 
    } 
    // </editor-fold> 
} 

回答

4

是的。 request.getRemoteAddr()返回客户端IP。
唯一的问题是用户在代理之后。使用这将返回代理服务器的地址。为了检索客户的IP,我们使用request.getHeader("x-forwarded-for")

相关问题