Eu fiz uma classe para isso ...
Faco a comparacao utilizando deslocamento de bits ...
Espero ter ajudado, um abraco ...
Me diga depois o q vc acho ...

On Wed, 11 Apr 2001, you wrote:
> 
> Oi pessoal,
> 
> estou desenvolvendo um aplicativo que será utilizado em diferentes ambientes(lan, 
>internet, etc) e eu estou querendo restringir o acesso de usuários que são permitidos 
>somente na lan a não acessar via internet. Para fazer isto estou cadastrando em uma 
>tabela a máscara e endereço atribuido a cada um dos ambientes e comparando com o 
>endereço que pego do usuário que se loga, mas estou fazendo via comparação de string, 
>por exemplo:
> 
> getip user: 194.2.20.34
> usernet:194.2.0.0
> usermask:255.255.0.0
> 
> Eu pego o ip aplico a usermask e comparo com o usernet para validar o acesso. 
> 
> Gostaria de saber se existe alguma classe que faz esta comparação diretamente  sem 
>eu ter que tratar por string ou se existe uma maneira melhor de fazer isto.
> 
> 
> Grato
> Marcelo.
> 
> 
> 

----------------------------------------
Content-Type: text/html; name="unnamed"
Content-Transfer-Encoding: quoted-printable
Content-Description: 
----------------------------------------
import java.util.StringTokenizer ;

public class IPFilter {
  private int ip  ;
  private int mask ;
  
  public IPFilter(String ip, int mask) throws Exception {
    if ((mask < 0) || (mask > 32))
      throw new Exception("Invalid mask") ;
    this.ip = this.ipToInt(ip)  ;
    this.mask = 32 - mask       ;
    this.ip = this.ip >> this.mask ; 
  }

  public boolean accept(String ip) throws Exception {
    int i = this.ipToInt(ip) ;
    i = (i >> this.mask)     ;
    return this.ip == i      ;
  }

  private int ipToInt(String ip) throws Exception {
    StringTokenizer tokens = new StringTokenizer(ip, ".") ;
    char n1 ;
    char n2 ;
    char n3 ;
    char n4 ;
    int  re ;
    try {
      n1 = (char) Integer.parseInt(tokens.nextToken()) ; 
      n2 = (char) Integer.parseInt(tokens.nextToken()) ; 
      n3 = (char) Integer.parseInt(tokens.nextToken()) ; 
      n4 = (char) Integer.parseInt(tokens.nextToken()) ; 
      re = ((n1 & 0xff) << 24) | ((n2 & 0xff) << 16) | ((n3 & 0xff) << 8) | ((n4 &0xff)) ;
      return re ;
    } catch (Exception e) {
      throw new Exception("Ivalid ip ") ;
    }
  }
}
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a