• Domingo 22 de Diciembre de 2024, 19:03

Autor Tema:  Validar Direccion Ip  (Leído 13606 veces)

franc

  • Miembro MUY activo
  • ***
  • Mensajes: 157
    • Ver Perfil
Validar Direccion Ip
« en: Miércoles 14 de Junio de 2006, 11:52 »
0
¿ Conoceis algun metodo para validar direciones IP ?
del tipo xxx.xxx.xxx.xxx dondelas xxx pueden tomar valores hasta 255 y pueden haber x que se omitan por ser la primera x de cada grupo y además ser cero ( ej. 195.2.0.254 )

He buscado por todas partes y no hay forma de encontrar un RegExp que resuelva esto, ¿ alguien puede ayudarme ?

gracias

jpaler

  • Miembro MUY activo
  • ***
  • Mensajes: 479
    • Ver Perfil
Re: Validar Direccion Ip
« Respuesta #1 en: Miércoles 14 de Junio de 2006, 18:22 »
0
mira compañero, aqui tengo uno q lo acabo de hacer, pero
lo hice en java (EL MEJOR LENGUAJE DE PROGRAMACION DEL MUNDO):
...,aki te dejo para q lo pases a ASP...listo:

Código: Text
  1.  
  2.     /**
  3.      * Este metodo devuelve true si la direccion ip pasada como parametro
  4.      * es valida o false en caso contrario
  5.      * @param dir String
  6.      * @return boolean
  7.      */
  8.     public static boolean esUnaDireccionIPValida( String dir ) {
  9.         //En java un StringTokenizer es una version mejorada del String
  10.         //  q permite darle formato a las cadenas. Al llamar el constructor
  11.         //  y pasar por ej. la direccion="255.192.168.1" y el String punto "." lo q
  12.         //  hago es separar la ip y dejar a st={"255","192","168","1"}
  13.         StringTokenizer st = new StringTokenizer( dir, "." );
  14.  
  15.         //ahora verifico q si el tamaño de st no es 4, osea, los 4 numeros
  16.         //  q debe tener toda direcicon ip, digo q esta mal la direccion ip.
  17.         if ( st.countTokens() != 4 ) {
  18.             return false;
  19.         }
  20.        
  21.         //ahora sigo verificando, y le digo a st con el metodo nextTokens()
  22.         //  q me de uno por uno sus elementos, es decir, los 4 numeros de las
  23.         //  de la direcicon ip. Luego verifo q el numero tenga solo 1 o 3 digitos y
  24.         //  q este entre 0 y 255. Y listo, eso es todo.
  25.         while ( st.hasMoreTokens() ) {
  26.             String nro = st.nextToken();
  27.             if ( ( nro.length() > 3 ) || ( nro.length() < 1 ) ) {
  28.                 return false;
  29.             }
  30.             int nroInt = 0;
  31.             try {
  32.                 nroInt = Integer.parseInt( nro );
  33.             }
  34.             catch ( NumberFormatException s ) {
  35.                 return false;
  36.             }
  37.             if ( ( nroInt < 0 ) || ( nroInt > 255 ) ) {
  38.                 return false;
  39.             }
  40.         }
  41.         return true;
  42.     }
  43.  
  44.  

Si tienes alguna duda, no hay problema... solo la comentas y listo.
Espero y te sirva...
salu2 !!!

tonilope

  • Miembro activo
  • **
  • Mensajes: 51
    • Ver Perfil
Re: Validar Direccion Ip
« Respuesta #2 en: Miércoles 14 de Junio de 2006, 19:05 »
0
Yo me hice este en C (posiblemente el mejor lenguaje de la historia :P) hace ya bastante:

Código: Text
  1.  
  2. int compruebaIP(char *ip){
  3.  
  4.   char octeto[4];
  5.   int contador, j, valida, num;
  6.  
  7.  
  8.   contador=0;
  9.   valida=1;
  10.   num=0;
  11.  
  12.   while(contador<=strlen(ip) && valida)    
  13.   {
  14.     j=0;
  15.  
  16.  
  17.     while(ip[contador]!='.' && j<3 && ip[contador]!='\0' && valida)      
  18.    {
  19.  
  20.       if(ip[contador]>=48 && ip[contador]<=57 )            
  21.             octeto[j++]=ip[contador++];
  22.       else
  23.             valida=0;
  24.      
  25.     }
  26.  
  27.     octeto[j]='\0';
  28.  
  29.  
  30.     if(j>0 && (ip[contador]=='.' || ip[contador]=='\0') && atoi(octeto)<=255 && atoi(octeto)>=0)              
  31.          num++;
  32.     else
  33.          valida=0;
  34.  
  35.  
  36.      contador++;
  37.  
  38.   }
  39.  
  40.  
  41.   if(num!=4)        
  42.           valida=0;
  43.  
  44.  
  45.   return(valida);
  46.  
  47. }
  48.  
  49.  

1º) Comprueba que sólo haya cifras en cada octeto (como máximo 3 cifras por octeto).

2º) Comprueba que el octeto esté entre 0 y 255.

3º) Comprueba que la Ip tenga exactamente 4 octetos.

Si pasa los 3 filtros, la IP es válida.

Salu2 ;)

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Re: Validar Direccion Ip
« Respuesta #3 en: Jueves 15 de Junio de 2006, 10:06 »
0
Hola,

No he probado la función que te acabo de hacer porque no tengo tiempo, pero creo que si que te funcionará, pruebala y me cuentas.

Código: Text
  1.  
  2. 'Esta función recibe como parámetro el valor de la IP que se tiene que validar (Ej: 192.168.2.25)
  3. 'y devuelve True en el caso de que la IP sea correcta y False en caso de que sea errónea.
  4. Function validarIP (ValorIP)
  5.   Set objRegExp = New RegExp
  6.   objRegExp.Pattern = "^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$"
  7.   objRegExp.IgnoreCase = True
  8.   objRegExp.Global = True
  9.   If Not objRegExp.Test(ValorIP) Then
  10.     validarIP = False
  11.   Else
  12.     validarIP = True
  13.   End If
  14. End Function
  15.  
  16.  
  17.  

Ejemplo de como se utilizaría

Código: Text
  1.  
  2. If validarIP("192.168.2.25") Then
  3.   response.write "IP Correcta."
  4. Else
  5.   response.write "IP Errónea."
  6. End If
  7.  
  8.  

Espero que te sirva.

Un saludo.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid

franc

  • Miembro MUY activo
  • ***
  • Mensajes: 157
    • Ver Perfil
Re: Validar Direccion Ip
« Respuesta #4 en: Viernes 23 de Junio de 2006, 12:34 »
0
gracias a todos, me ha venido muy bien vuestros codigos,

un saludo

ing_marco

  • Miembro MUY activo
  • ***
  • Mensajes: 263
    • Ver Perfil
Re: Validar Direccion Ip
« Respuesta #5 en: Viernes 23 de Junio de 2006, 14:20 »
0
Excelente ROBER.29, tu codigo de validacion con expresiones regulares esta muy bien, de manera k lo puedes poner asi como lo hiciste o simplemente poner un validator de asp.net y poner la expresion regular el resto se encarga el .Net.
MARCO DIAZ
Ing_Marco
Bachiller Ing de Sistemas.
UNT
Trujillo-Peru

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Re: Validar Direccion Ip
« Respuesta #6 en: Jueves 29 de Junio de 2006, 10:09 »
0
Hola,

Me alegro que haya funcionado, es que la hice de prisa y corriendo y ni tan siquiera la probé.

Un placer ayudaros.

Un saludo.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid