viernes, 11 de mayo de 2012

esIPv4 en Java

Método en Java que determina si un String corresponde a un IPv4 válida.
Recuerden que el javadoc es un documento html generado, por lo tal debemos utilizar el &_acute; cuando necesitamos puntuación en la documentación del método; y para que los mensajes en pantalla se generen con puntuación debemos utilizar las salidas unicode con el \uXXXX, con esto nos aseguramos que los símbolos y caracteres especiales se muestren correctamente en cualquier SO.

/**
  * M&eacte;todo que verifica si el String ingresado corresponde a una dirección IP v4.
  * @param ip IP a verificar.
  * @return true Si el String ingresado corresponde a una dirección IP v4. 
  * @throws java.lang.Exception En caso de que el String ingresado no respete las reglas de una IP v4. 
  */
public static boolean esIPv4( String ip ) throws Exception{ 
    try{ 
        /* Verificacion de la longitud del texto. */
        if( ip == null || ip.trim().length() < 7 ){
            return false;
        }


        /* Segmentacion de los valores de la IP. */
        String[] temp = ip.split( "\\." ); 
    
        /* Verificacion de la cantidad de octetos ingresados. */ 
        if( temp.length != 4 ){ 
            return false;
        } 
       
        /* Que todos los octetos sean un numero. */
        /* Ver metodo isNumeric( String ) en mi blog. */
        for( String oct : temp ){ 
            if( !isNumeric(oct) ){ return false; } 
        }


        /* Limites de valores permitidos en los octetos. */ 
        int[] dir = new int[]{ 
                Integer.parseInt( temp[0] ), 
                Integer.parseInt( temp[1] ), 
                Integer.parseInt( temp[2] ), 
                Integer.parseInt( temp[3] ) 
        };


        if( dir[0] > 254 || dir[0] <= 0 || 
               dir[1] > 254 || dir[1] < 0 || 
               dir[2] > 254 || dir[2] < 0 || 
               dir[3] > 254 || dir[3] <= 0 ){ 
            return false; 
        } 
     
        return true;
    }catch( Exception ex ){ 
        throw new Exception( 
             "Error en el m\u00c9todo: esIPv4( String )\n - " + ex.getMessage() 
        ); 
    } 
}

No hay comentarios:

Publicar un comentario