Operação aritmética com String

5 respostas
robinsonbsilva

Senhores,

existe alguma forma que eu consiga verificar se um número de IP está entre um intervalos

IP: 192.168.1.0           - IP Binário: 11000000101010000000000100000000
Mask: 255.255.255.192 - Mask Binário: 11111111111111111111111111000000
IP Broad: 192.168.1.63 - Broad Binário: 11000000101010000000000100111111

Exemplo:

if("novo_IP" >= "192.168.1.0"  && "novo_IP" >= "192.168.1.63")
   System.out.println("Você está entrando em um range existente");

5 Respostas

P

Dica: Como os IPs se dividem em classes (A,B,C), voce nao precisa colocar todo o corpo 192.168.1.X, voce pode colocar só a terminação.

E coloca o range como short.

robinsonbsilva

Então Sérgio,

Aqui a empresa possui Blocos de IP, aí eles quebram esses blocos em “bloquinhos”…
ou seja, /30 eles quebram em /28…destrinchando mesmo!
será que seu validar apenas o “octetos” que representam os Host e trabalhar como um numero
exemplo:

205.215.XXX.XXX !!!

sergiotaborda

robinsonbsilva:
Senhores,

existe alguma forma que eu consiga verificar se um número de IP está entre um intervalos

IP: 192.168.1.0           - IP Binário: 11000000101010000000000100000000
Mask: 255.255.255.192 - Mask Binário: 11111111111111111111111111000000
IP Broad: 192.168.1.63 - Broad Binário: 11000000101010000000000100111111

Exemplo:

if("novo_IP" >= "192.168.1.0" && "novo_IP" >= "192.168.1.63") System.out.println("Você está entrando em um range existente");

Vc já está ha semanas perguntando a mesma coisa…

class IP implements Comparable<IP>{

      BigInterger number;  
    
      public static IP valueOf (String formatedIP){
            String[] parts = formatedIP.split("\\.");
            byte[] octets = new byte[4];
            for (int i=0;i<4;i++){
                 octets[i] = Byte.parseByte(parts[i]);
            } 
            return new IP(octests)
      }

      public static IP valueOf (byte ... octets){
         return new IP(octests)
      }

     private IP(byte[] octets){
              this.number = new BigInteger(octets);
     }

      public int compareTo(IP other){
             return this.number.compareTo(other.number);
      }

      public IP applyMask(IP mask){
             return new IP( this.number.and(other.number) );
      }
}

:evil:

Paulo_Silveira

Mais facil: use o que ja tem pronto. O metodo toBinaryString:
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Integer.html#toBinaryString(int)

robinsonbsilva

Senhores

Muito obrigado pela ajuda…realmente encontrei dificuldades para resolver este problema, por isso a persitência em questionar.

Mais uma vez obrigado!

:oops:

Criado 1 de julho de 2008
Ultima resposta 2 de jul. de 2008
Respostas 5
Participantes 4