자바 ipAddress 얻기

자바 ipAddress 얻기

<%!
 // 모든 clientIp를 얻는다.
 public Vector getClientIpList(HttpServletRequest req) {
  Vector ipList = new Vector();
  
  try {
   Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
   if (en == null) {
    return null;
   }
   
   while (en.hasMoreElements()) {
    NetworkInterface ni = en.nextElement();
    if (ni == null || ni.isLoopback()) {
     continue;
    }
      
    Enumeration<InetAddress> inetAddresses = ni.getInetAddresses();
    if (inetAddresses == null) {
     continue;
    }
    
    String oneIpAddress = null;
    while (inetAddresses.hasMoreElements()) {
     InetAddress ia = inetAddresses.nextElement();
     if (ia == null) {
      continue;
     }
     
     if (ia.getHostAddress() != null && ia.getHostAddress().indexOf(“.”) > -1) {
      oneIpAddress = ia.getHostAddress();
      
      if (oneIpAddress != null && oneIpAddress.length() > 0) {
       ipList.add(oneIpAddress); 
      }
      break;
     } 
    }
   }
   
  } catch (Exception e) {
   // 무시
  }
  
  // X-Forwarded-For 에서 얻기
  String xffAddr = req.getHeader(“X-Forwarded-For”);
  if (xffAddr != null && xffAddr.length() > 0 && !xffAddr.equals(“unknown”)) {
   ipList.add(xffAddr);
  }
  
  // RemoteAddr 얻기
  String remoteAddr = req.getRemoteAddr();
  if (remoteAddr != null && remoteAddr.length() > 0) {
   ipList.add(remoteAddr);
  }
  
  return ipList;
 }
%>