6 de setembro de 2008

Destrinchador de IPs em Java


Há cerca de 3 anos, em 2005, eu estava estudando a disciplina de redes, tanto no curso técnico, quanto no superior e me deparei com aquelas contas que fazemos com os endereços IPv4 e suas máscaras, para obtermos informações sobre os mesmos. Confesso que na época eu não era muito bom com isso e sempre me enrolava no meio dos cálculos. Isso me incentivou a criar um programa que gerasse os resultados para mim, fazendo os cálculos automaticamente.

À princípio eu usei a linguagem C para criar este programa, mas, como estava tentando me aprimorar em Java, resolvi portá-lo para esta linguagem, criando um applet que fosse acessível via Internet. Assim eu o fiz, mas apesar de funcional, hoje sei que o código poderia ter sido mais bem trabalhado. Como assim?

Um exemplo: para eu verificar qual o endereço de rede de um dado endereço IP, eu transformo o próprio endereço IP e sua máscara numa sequência de vários 0s e 1s (notação binária) e comparo os dois resultados. Onde for 1 nos dois, vira 1 no endereço de rede. Qualquer outra combinação vira zero. Ora, é fácil perceber que este é um E lógico... Hoje eu sei que bastaria comparar cada octeto dos endereços com um operador bit a bit (&). Seria mais fácil e rápido. Contudo, ninguém nasce sabendo (felizmente, senão não teria graça em aprender) e isto serviu para que, pelo menos, eu aprendesse um pouco mais sobre a linguagem Java e orientação a objetos – sem contar que nunca mais fiz os malditos cálculos que sempre me assolavam :D.

Uma coisa que acho legal neste tipo de desenvolvimento é que você acaba unindo vários conhecimentos que adquiriu, para resolver o seu problema. No caso, além de usar uma linguagem de programação orientada a objetos (Java), eu acabei desenvolvendo um autômato reconhecedor de entradas válidas para o programa. Consegui fazer um que aceita apenas um endereço IPv4 (N.N.N.N – onde 0 <= N <= 255); um endereço IPv4 seguido do número de bits 1 que compõem a sua máscara (N.N.N.N/NO – onde 8 <= NO <= 32); e um endereço IPv4 seguido do endereço integral da sua máscara (N.N.N.N/NUM.N.N.N – onde NUM = 255). Qualquer outra entrada é tratada como inválida e os valores padrões (127.0.0.1/8 – endereço de loopback) são usados.

Sem mais blá-blá-blá, segue o programa e o código fonte de cada arquivo utilizado na confecção do mesmo. Detalhe: é necessário ter a máquina virtual Java (Java Virtual Machine JVM) para conseguir visualizar o programa.

Destrinchador de IPs

alt="O seu navegador entende a tag <APPLET> mas não está executando o applet." Por alguma razão seu navegador está ignorando completamente a tag <APPLET> !
Os códigos fontes
Applet
Classe EnderecoIP
Classe ConvIP
Classe LibVerIP

Licenciado sob GPL

Nenhum comentário:

Postar um comentário