在servlet里我该怎么获得别人在调用我的servlet和自己调用的IP地址?我做的是一个增加功能,需要获得别人在别人的电脑上的IP.没分了,帮帮忙!

解决方案 »

  1.   

    request.getRemoteAddr() 获取客户端ip;
    request.getRemotePort() 获取客户端ip;
    request.getLocalAddr() 获取服务端ip;
    request.getLocalPort()获取服务端端口.
      

  2.   

    /**
    * 从request中取得本次请求客户端IP地址.
    * @param request
    * @return
    */
    public static String getIpAddr(HttpServletRequest request) {
      
       String[] ips = request.getHeader("x-forwarded-for").split(",");
       String ip = "";
      
       if(ips != null || ips.length != 0){   //如果有多个x-forward-for,第一个为Unkown的对IP为客户端IP
        for(int i =0;i<ips.length;i++){
         if(!ips[i].equalsIgnoreCase("unknown")){
          ip = ips[i];
          break;
         }
        }
       }
      
       if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
       }
       if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
       }
       if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
       }
       return ip;
      

  3.   

    可定可以了。。
    String ip = request.getRemoteAddr();
    if ("127.0.0.1".equals(ip)) {
    InetAddress addr;
    addr = InetAddress.getLocalHost();
    ip = addr.getHostAddress().toString();// 
    }