Ola,
Estou com um grande problema aqui, eu tenho estas duas classes, é uma calculadora de IP só que quando ele deve exibir mais de um resultado no JTable ele não consegue e mostra apenas um.
Usei o exemplo 19.5.5.1 subnet 30
[code]IPAddress
//Importação de pacotes necessários
import javax.swing.;
import java.math.;
import java.util.*;
public class IPAddress
{
//Variáveis de Instância
int oct1,
oct2,
oct3,
oct4,
subrede;
StringTokenizer stringtokenizer, stringtokenizer1;
String classe, subnet;
//Mínimo de bits para subredes A,B,C
int min[] = new int[3];
//Máximo de bits para subredes A,B,C
long max[] = new long[3];
public IPAddress(int oct1, int oct2, int oct3, int oct4, int subrede)
{
try{
//Altera o estado dos Atributos
this.oct1 = oct1;
this.oct2 = oct2;
this.oct3 = oct3;
this.oct4 = oct4;
this.subrede = subrede;
//De 0 a 126 classe A sem considerar o 10
if((oct1>0&&oct1<127)&&(oct1!=10)) classe="A";
//10 Reservado para NAT e Proxy
if(oct1==10) classe="A Privativo";
//127 Teste de Interface
if(oct1==127) classe="LoopBack";
//De 128 a 191 classe B
if((oct1>127&&oct1<191)&&(oct1!=172)) classe="B";
//172 Reservado para NAT e Proxy
if(oct1==172) classe="B Privativo";
//192 Reservado para NAT e Proxy
if(oct1==192) classe="C Privativo";
//De 192 a 223 classe C
if(oct1>192&&oct1<224) classe="C";
//De 224 a 239 classe D
if(oct1>223&&oct1<240) classe="D Experimental";
//De 240 a 254 classe E
if(oct1>239&&oct1<255) classe="E Experimental";
//Ip Invalido
if(oct1<0&&oct1>254) classe="Inválida";
}
//Se for digitado caractere diferente de numero dispara exceção
catch( NumberFormatException e )
{
JOptionPane.showMessageDialog(null,"Formato de Endereço IP ou Número de Subredes Inválido.","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
}
}
public String retornarIPClasse()
{
//Retorna a classe do IP
return classe;
}
public int retornarNumDeBitsEmprestados()
{
//Variável de Retorno
int i=0, n_bits = 0;
//Máximo de bits para subredes A,B,C
for(i=0;i<3;i++) max[i] = 30;
//Classe A
min[0] = 8;
//Classe B
min[1] = 16;
//Classe C
min[2] = 24;
String mskr_subrede_padrao = "255.";
//Se não tiver subredes
if( classe.equals("A")||classe.equals("A Privativo") ) i = 0;
if( classe.equals("B")||classe.equals("B Privativo") ) i = 1;
if( classe.equals("C")||classe.equals("C Privativo") ) i = 2;
if( classe.equals("D Experimental")||classe.equals("E Experimental")||classe.equals("LoopBack")||classe.equals("Inválida") ) return 0;
//se subrede <= 0 retorna 0
if( ( subrede - min[i] ) <= 0 ) return 0;
//se subrede > máximo permitido retorna 0
if( subrede > max[i] )
{
JOptionPane.showMessageDialog(null,"" + max[i] + " é o número máximo de bits para subredes classe " + classe + ".","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
return 0;
}
else
{
//bits da subrede - mínimo permitido
n_bits = subrede - min[i];
}
//retorna bits restantes
return n_bits;
}
public String retornarSubredeAddress()
{
int x=0,
n_bits = retornarNumDeBitsEmprestados(),
quoc_nbits,
rest_nbits,
msk_comp = 0;
String std_mask = "";
double i = 0;
if( classe.equals("A")||classe.equals("A Privativo") ) x = 1;
if( classe.equals("B")||classe.equals("B Privativo") ) x = 2;
if( classe.equals("C")||classe.equals("C Privativo") ) x = 3;
if( classe.equals("Loopback") ) return "LoopBack";
if( classe.equals("Inválida") ) return "Inválida";
if( classe.equals("D Experimental")||classe.equals("E Experimental") ) return "Experimental";
for( i=0; i<x; i++ ) std_mask += "255.";
if(n_bits<=1)
{
if( classe.equals("A")||classe.equals("A Privativo") )
{
subnet = std_mask+"0.0.0";
//System.out.println(subnet);
return std_mask+"0.0.0";
}
if( classe.equals("B")||classe.equals("B Privativo") )
{
subnet = std_mask+"0.0";
//System.out.println(subnet);
return std_mask+"0.0";
}
if( classe.equals("C")||classe.equals("C Privativo") )
{
subnet = std_mask+"0";
//System.out.println(subnet);
return std_mask+"0";
}
}
quoc_nbits = n_bits/8;
rest_nbits = n_bits%8;
std_mask += "";
if( classe.equals("A")||classe.equals("A Privativo")||classe.equals("B")||classe.equals("B Privativo") )
{
if( quoc_nbits == 0)
{
for( i=0;i<rest_nbits;i++ ) msk_comp += potencia( 2, 8-i-1 );
std_mask += ""+msk_comp+"";
if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==0)) std_mask += ".0.0";
if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==1)) std_mask += ".0";
if((classe.equals("B")||classe.equals("B Privativo"))&&(quoc_nbits==0)) std_mask += ".0";
subnet = std_mask;
//System.out.println(subnet);
}
else
{
for( i=0;i<quoc_nbits;i++ ) std_mask += "255.";
for( i=0;i<rest_nbits;i++ ) msk_comp += potencia( 2, 8-i-1 );
std_mask += ""+msk_comp+"";
if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==0)) std_mask += ".0.0";
if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==1)) std_mask += ".0";
if((classe.equals("B")||classe.equals("B Privativo"))&&(quoc_nbits==0)) std_mask += ".0";
subnet = std_mask;
//System.out.println(subnet);
}
}
else
{
for( i=0;i<rest_nbits;i++ ) msk_comp += potencia( 2, 8-i-1 );
std_mask += ""+msk_comp+"";
subnet = std_mask;
//System.out.println(subnet);
}
//System.out.println(subnet);
return std_mask;
}
public double potencia( double base, double expoente )
{
//Variável de controle
double retorno=0;
//Se expoente < 2 retorna 1 ou a base
if( expoente == 0 ) return 1;
if( expoente == 1 ) return base;
//Se expoente >=2 calcula a potência
if( expoente >= 2 ) retorno = base * potencia( base, (expoente - 1) );
//retorna resultado
return retorno;
}
public String retornarBroadCastAddress()
{
System.out.println("---------------------------------------------------");
//Índice de controle
int i = 0, j = 0, valor = 0, contador = 0;
//Num. de bits emprestados para subrede
int nbits = retornarNumDeBitsEmprestados();
//Vetor para partes do end. de rede
int partes[] = new int[4],
//Vetor para partes do end. de rede
subparte[] = new int[4],
//Vetor para partes do binario da parte de subrede <> 255 ou <> 0
binario[] = new int[8];
//Recebe endereco de rede como String
String endrede = retornarEnderecoDeRede(),
//Recebe endereco de subrede como String
subr = retornarSubredeAddress(),
//Variável de retorno
endbroad = "";
if( classe.equals("LoopBack") ) return "LoopBack";
if( classe.equals("Inválida") ) return "Inválida";
if( classe.equals("D Experimental")||classe.equals("E Experimental") ) return "Experimental";
//Instancia separadores de string com o parâmetro ponto
stringtokenizer = new StringTokenizer( endrede, ".");
stringtokenizer1 = new StringTokenizer( subr, ".");
//Separa os quatro octetos
for(i=0;i<4;i++)
{
//Atribui os octetos do end. de rede ao vetor partes
partes[i] = Integer.parseInt( stringtokenizer.nextToken() );
//Atribui os octetos do end. de subrede ao vetor subparte
subparte[i] = Integer.parseInt( stringtokenizer1.nextToken() );
}
//Caso numero de bits emprestados seja menor que 2
if( nbits < 2 )
{
//Retorna endereços de Broadcast Padrão
if( classe.equals("A")||classe.equals("A Privativo") ) return partes[0]+".255.255.255";
if( classe.equals("B")||classe.equals("B Privativo") ) return partes[0]+"."+partes[1]+".255.255";
if( classe.equals("C")||classe.equals("C Privativo") ) return partes[0]+"."+partes[1]+"."+partes[2]+".255";
}
//Troca os valores 0 para 255 no vetor partes
//for(i=0;i<4;i++) if( partes[i] == 0 ) partes[i] = 255;
//Associa os elementos do vetor no formato IPv4
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
//Busca o octeto com descrição diferente de 255 do oct4 ao oct1 na subrede
for(i=3;i>=0;i--) if(subparte[i]==255) break;
//Acrescenta o índice por causa do decremento da repetição acima
i++;
System.out.println( "-->" + endbroad );
//caso não existam bits emprestados, então usar-se-á end. de broadcast padrão
if( nbits < 2 )
{
return endbroad;
}
else
{
if( classe.equals("C")||classe.equals("C Privativo") )
{
valor = subparte[i];
if( partes[i] != 0255 )
{
while( valor != 0 )
{
binario[j] = valor % 2;
if(binario[j]==0) contador ++;
valor = valor / 2;
j++;
}
partes[3] += (int) potencia( 2, contador ) - 1;
System.out.println("-->Funcionou" + partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
else
{
partes[3] = (int) potencia( 2, nbits ) - 1;
System.out.println("aqui"+partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
}
if( classe.equals("B")||classe.equals("B Privativo") )
{
int z = 0;
for(z=0;z<3;z++) if(subparte[z]!=255) break;
if(z==2)
{
partes[3] = 255;
valor = subparte[z];
if( partes[i] != 0255 )
{
while( valor != 0 )
{
binario[j] = valor % 2;
if(binario[j]==0) contador ++;
valor = valor / 2;
j++;
}
partes[z] += (int) potencia( 2, contador ) - 1;
System.out.println("-->Funcionou" + partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
else
{
partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
System.out.println("aqui"+partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
}
else
{
valor = subparte[z];
if( partes[i] != 0255 )
{
while( valor != 0 )
{
binario[j] = valor % 2;
if(binario[j]==0) contador ++;
valor = valor / 2;
j++;
}
partes[3] += (int) potencia( 2, contador ) - 1;
System.out.println("-->Funcionou" + partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
else
{
partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
System.out.println("aqui"+partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
}
}
if( classe.equals("A")||classe.equals("A Privativo") )
{
int z = 0;
for(z=0;z<3;z++) if(subparte[z]!=255) break;
if(z==1)
{
partes[2] = 255;
partes[3] = 255;
valor = subparte[z];
if( partes[i] != 0255 )
{
while( valor != 0 )
{
binario[j] = valor % 2;
if(binario[j]==0) contador ++;
valor = valor / 2;
j++;
}
partes[z] += (int) potencia( 2, contador ) - 1;
System.out.println("-->Funcionou" + partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
else
{
partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
System.out.println("aqui"+partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
}
else
{
if(z==2)
{
partes[3] = 255;
valor = subparte[z];
if( partes[i] != 0255 )
{
while( valor != 0 )
{
binario[j] = valor % 2;
if(binario[j]==0) contador ++;
valor = valor / 2;
j++;
}
partes[3] += (int) potencia( 2, contador ) - 1;
System.out.println("-->Funcionou" + partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
else
{
partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
System.out.println("aqui"+partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
}
else
{
valor = subparte[z];
if( partes[i] != 0255 )
{
while( valor != 0 )
{
binario[j] = valor % 2;
if(binario[j]==0) contador ++;
valor = valor / 2;
j++;
}
partes[3] += (int) potencia( 2, contador ) - 1;
System.out.println("-->Funcionou" + partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
else
{
partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
System.out.println("aqui"+partes[3]);
endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
return endbroad;
}
}
}
}
}
return endbroad;
}
public double retornarNumDeHostsValidos()
{
//Variáveis de controle
double x = 0,
y = 0,
z = 0,
w = 0;
int n_bits = retornarNumDeBitsEmprestados(),
total = 0,
i = 0;
if( classe.equals("LoopBack") ) return 0;
if( classe.equals("Inválida") ) return 0;
if( classe.equals("D Experimental")||classe.equals("E Experimental") ) return 0;
//Retorna numero de hosts para subrede padrão nas classes A, B e C.
if((classe.equals("A")||classe.equals("A Privativo"))&&(n_bits<2)) return 16777214;
if((classe.equals("B")||classe.equals("B Privativo"))&&(n_bits<2)) return 65534;
if((classe.equals("C")||classe.equals("C Privativo"))&&(n_bits<2)) return 254;
//System.out.println("n_bits:" + n_bits);
//Define num. mínimo de bits para classes A e B
if((classe.equals("A")||classe.equals("A Privativo"))) i=8;
if((classe.equals("B")||classe.equals("B Privativo"))) i=16;
//retorna o num de redes válidas * num de hosts validos por cada rede válida
if((classe.equals("C")||classe.equals("C Privativo"))) return ((potencia( 2, n_bits )-2)*(potencia( 2, 8-n_bits)-2));
//32 - minimo de bits da classe
x = 32 - i;
if(x<0) x *= -1;
//System.out.println("x:" + x);
//32 - minimo de bits da classe - num. de bits emprestados
y = x - n_bits;
if(y<0) y *= -1;
//System.out.println("y:" + y);
//Obtém num. de subredes válidas
z = ( potencia( 2, y ) - 2 );
//System.out.println( "z:" + z );
//Multiplica pelo num. de hosts válidos por subrede
w = z * (potencia( 2, n_bits ) - 2 );
//System.out.println( "w:" + w );
//retorna total de hosts válidos
return w;
}
public double verificarNumDeSubredes()
{
//Variáveis de controle
double retorno;
//Se ( (2 elevado ao num de bits restantes) - 2 ) < 0 atribui 0 ao retorno
if( (retorno = potencia( 2 , retornarNumDeBitsEmprestados() ) - 2) < 0 ) retorno = 0;
//Retorna num. de subredes
return retorno;
}
public String retornarEnderecoDeRede()
{
int i = 0, x = 0,
octetos[] = new int[4],
bin_rede[] = new int[8],
bin_mask[] = new int[8],
endrede = 0, endmask = 0;
String retorno = "";
if( classe.equals("LoopBack") )
{
return "LoopBack";
}
else
{
if( classe.equals("D Experimental")||classe.equals("E Experimental") )
{
return "Experimental";
}
else
{
if( classe.equals("D Experimental")||classe.equals("E Experimental") )
{
return "Experimental";
}
else
{
stringtokenizer = new StringTokenizer( subnet, ".");
for(i=0;i<8;i++)
{
bin_rede[i] = 0;
bin_mask[i] = 0;
}
for(i=0;i<4;i++)
{
octetos[i] = Integer.parseInt( stringtokenizer.nextToken() );
//System.out.println( octetos[i] );
}
i=0;
while(octetos[i]==255) i++;
endmask = octetos[i];
if( i==1 )
{
endrede = oct2;
retorno = ""+oct1+".";
}
if( i==2 )
{
endrede = oct3;
retorno = ""+oct1+"."+oct2+".";
}
if( i==3 )
{
endrede = oct4;
retorno = ""+oct1+"."+oct2+"."+oct3+".";
}
//System.out.println( endrede );
x=0;
while( endrede != 0 )
{
bin_rede[7-x] = endrede % 2;
endrede = endrede/2;
//System.out.println("bin_rede" + bin_rede[7-x]);
x++;
}
x = 0;
while( endmask != 0 )
{
bin_mask[7-x] = endmask % 2;
endmask = endmask/2;
//System.out.println("bin_mask" + bin_mask[7-x]);
x++;
}
int saida = 0;
for(x=0;x<7;x++)
{
if(bin_mask[x]==1&&bin_rede[x]==1) saida += potencia( 2, 7 - x);
}
retorno += saida;
if(i==1) retorno += ".0.0";
if(i==2) retorno += ".0";
//System.out.println("saida:"+saida);
}
}
}
return retorno;
}
}
[/code]
E a outra principal
[code] IPMain
import javax.swing.;
import java.awt.;
import java.awt.event.;
import java.util.;
public class IPMain extends JDialog
{
JLabel lbl_title = new JLabel( "Verificador de IP");
JLabel lbl_logo = new JLabel( new ImageIcon("logo.gif") );
JLabel lbl_ipaddress = new JLabel( "Endereco IP:" );
JTextField txt_oct1 = new JTextField(3);
JTextField txt_oct2 = new JTextField(3);
JTextField txt_oct3 = new JTextField(3);
JTextField txt_oct4 = new JTextField(3);
JLabel lbl_subr = new JLabel("SubRede(Num.Bits):");
JTextField txt_subr = new JTextField(2);
JButton btn_verificar = new JButton("Analisar");
JButton btn_salvar = new JButton("Salvar");
JButton btn_fechar = new JButton("Fechar" );
JPanel p0, p1, p2, p3, p4, p5, p6, p7;
StringTokenizer stringtokenizer = null;
IPAddress ip;
Vector linhas = new Vector(), linha = new Vector();
Vector titulo_grid = new Vector();
JTable jtable = new JTable();
JScrollPane jscrollpane;
Container c_main = getContentPane();
JLabel lbl[] = new JLabel[14];
JTextField txt[] = new JTextField[14];
JPanel pnl[] = new JPanel[6];
public IPMain()
{
c_main.setLayout( new BorderLayout() );
p0 = new JPanel();
p1 = new JPanel();
p2 = new JPanel();
p3 = new JPanel();
p4 = new JPanel();
p5 = new JPanel();
p6 = new JPanel();
p7 = new JPanel();
p0.setLayout( new GridLayout( 2, 1 ) );
p1.setLayout( new FlowLayout( FlowLayout.CENTER ) );
p2.setLayout( new FlowLayout( FlowLayout.CENTER ) );
p3.setLayout( new GridLayout( 2, 1 ) );
p4.setLayout( new GridLayout( 7, 4 ) );
p5.setLayout( new GridLayout( 1, 1 ) );
p6.setLayout( new GridLayout( 1, 2 ) );
p7.setLayout( new FlowLayout( FlowLayout.CENTER ) );
txt_oct1.setColumns(3);
txt_oct1.setHorizontalAlignment( JTextField.CENTER );
txt_oct2.setColumns(3);
txt_oct2.setHorizontalAlignment( JTextField.CENTER );
txt_oct3.setColumns(3);
txt_oct3.setHorizontalAlignment( JTextField.CENTER );
txt_oct4.setColumns(3);
txt_oct4.setHorizontalAlignment( JTextField.CENTER );
p1.add( lbl_title );
p1.add( lbl_logo );
p2.add( lbl_ipaddress );
p2.add( txt_oct1 );
p2.add( txt_oct1 );
p2.add( txt_oct2 );
p2.add( txt_oct3 );
p2.add( txt_oct4 );
p2.add( lbl_subr );
p2.add( txt_subr );
p2.add( btn_verificar );
p0.add( p1 );
p0.add( p2 );
String lbl_rotulos[] = { " Classe:", " Desc.:", " Bits Emprestados:", " Desc.:", " Masc. SubRede:", " Desc.:", " End. de Rede:", " Desc.:", " SubRedes Válidas:", " Desc.:", " Num. Hosts Válidos:", " Desc.:"," Num. Broadcast:", " Desc.:"};
int i=0;
for(i=0; i<14; i++)
{
lbl[i] = new JLabel( lbl_rotulos[i] );
txt[i] = new JTextField(11);
p4.add( lbl[i] );
p4.add( txt[i] );
}
titulo_grid.addElement("Rede");
titulo_grid.addElement("Primeiro Host");
titulo_grid.addElement("Último Host");
titulo_grid.addElement("BroadCast");
titulo_grid.addElement("Válido");
int j;
for(j=0;j<5;j++) linha.addElement("");
linhas.addElement(linha);
jtable = new JTable( linhas , titulo_grid);
jscrollpane = new JScrollPane( jtable );
p6.add( btn_salvar );
p6.add( btn_fechar );
p5.add( jscrollpane );
p3.add( p4 );
p3.add( p5 );
p7.add( p6 );
c_main.add(p0,BorderLayout.NORTH );
c_main.add(p3,BorderLayout.CENTER);
c_main.add(p7,BorderLayout.SOUTH );
btn_verificar.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent e )
{
String oct1, oct2, oct3, oct4, subr;
linhas.removeAllElements();
oct1 = txt_oct1.getText().trim();
oct2 = txt_oct2.getText().trim();
oct3 = txt_oct3.getText().trim();
oct4 = txt_oct4.getText().trim();
subr = txt_subr.getText().trim();
if( oct1.equals("") || oct2.equals("") || oct3.equals("") || oct4.equals("") )
{
System.out.println("IP Inválido");
}
else
{
if( subr.equals("") ) subr="0";
try{
int oxt1 = Integer.parseInt(oct1),
oxt2 = Integer.parseInt(oct2),
oxt3 = Integer.parseInt(oct3),
oxt4 = Integer.parseInt(oct4),
subx = Integer.parseInt(subr);
if( ( oxt1> 0 && oxt1<255 )&&
( oxt2>=0 && oxt2<256 )&&
( oxt3>=0 && oxt3<256 )&&
( oxt4>=0 && oxt4<256 )&&
( subx>=0 && subx<=30 ))
{
ip = new IPAddress( oxt1,oxt2,oxt3,oxt4,subx);
txt[0].setText( ip.retornarIPClasse() );
txt[2].setText( ""+ip.retornarNumDeBitsEmprestados()+"" );
txt[4].setText( ""+ip.retornarSubredeAddress()+"" );
txt[6].setText(""+ip.retornarEnderecoDeRede()+"");
txt[8].setText( ""+ (int) ip.verificarNumDeSubredes()+"" );
txt[10].setText( ""+ (int) ip.retornarNumDeHostsValidos()+"" );
txt[12].setText( ""+ ip.retornarBroadCastAddress()+"" );
//Obtenção do endereço de rede e broadcast
int oct_rede[] = new int[4];
int oct_broad[] = new int[4];
String primeiro_host="", lst_host="";
//Separar octetos
StringTokenizer endrede = new StringTokenizer(ip.retornarEnderecoDeRede(),".");
StringTokenizer endbroad = new StringTokenizer(ip.retornarBroadCastAddress(),".");
int i=0;
for( i=0;i<4;i++ )
{
oct_rede[i] = Integer.parseInt(endrede.nextToken());
oct_broad[i] = Integer.parseInt(endbroad.nextToken());
}
int indice = 0;
int nbits = (int) ip.retornarNumDeBitsEmprestados();
String rede = ip.retornarEnderecoDeRede(),
broa = ip.retornarBroadCastAddress(),
classe = ip.retornarIPClasse();
if( nbits < 2 )
{
linha.removeAllElements();
primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(oct_rede[3]+1)+"";
lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(oct_broad[3]-1)+"";
linha.addElement(rede );
linha.addElement(primeiro_host);
linha.addElement(lst_host );
linha.addElement(broa );
linha.addElement("Válido" );
linhas.addElement(linha);
}
else
{
int nsubredes = (int) ip.verificarNumDeSubredes() + 2;
int steps = 0;
if(classe.equals("C")||classe.equals("C Privativo"))
{
steps = (int) 8 - ip.retornarNumDeBitsEmprestados();
steps = (int) ip.potencia( 2, (double) steps );
System.out.println(steps);
linha.removeAllElements();
int seq1=0, seq2=steps-1;
String validade="";
for( i=0;i<nsubredes;i++ )
{
if(i==0||i==nsubredes-1)
{
if(i==0)
{
System.out.println("Passou aqui 0");
rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+seq1+"";
System.out.println("Passou aqui 0: rede:"+rede);
primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(seq1+1)+"";
System.out.println("Passou aqui 0: 1st:"+primeiro_host);
lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(seq2-1)+"";
System.out.println("Passou aqui 0: lst:"+lst_host);
broa = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+seq2+"";
System.out.println("Passou aqui 0: broad:"+broa);
validade="Inválido";
}
else
{
System.out.println("Passou aqui ultimo");
rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+seq1+"";
System.out.println("Passou aqui ultimo: rede:"+rede);
primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(seq1+1)+"";
System.out.println("Passou aqui ultimo: 1st:"+primeiro_host);
lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(seq2-1)+"";
System.out.println("Passou aqui ultimo: lst:"+lst_host);
broa = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+seq2+"";
System.out.println("Passou aqui ultimo: brd:"+broa);
validade="Inválido";
}
}
else
{
System.out.println("Passou aqui meio");
rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+seq1+"";
System.out.println("Passou aqui ultimo: rede:"+rede);
primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(seq1+1)+"";
System.out.println("Passou aqui ultimo: 1st:"+primeiro_host);
lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(seq2-1)+"";
System.out.println("Passou aqui ultimo: lst:"+lst_host);
broa = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+seq2+"";
System.out.println("Passou aqui ultimo: brd:"+broa);
validade="Válido";
}
if(i!=0)
{
linha.remove(rede);
linha.remove(primeiro_host);
linha.remove(lst_host);
linha.remove(broa);
linha.remove(validade);
}
linha.addElement(rede);
linha.addElement(primeiro_host);
linha.addElement(lst_host);
linha.addElement(broa);
linha.addElement(validade);
linhas.addElement(linha.lastElement());
seq1=seq1+steps;
seq2=seq2+steps;
}
}
}
jtable = new JTable( linhas, titulo_grid );
jscrollpane = new JScrollPane( jtable );
p5.removeAll();
p5.repaint();
p5.validate();
p5.add(jscrollpane);
p5.repaint();
p5.validate();
c_main.repaint();
c_main.validate();
}
else
{
JOptionPane.showMessageDialog(null,"Formato de Endereço IP ou número de subredes inválido.","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
}
}
catch( NumberFormatException ex )
{
JOptionPane.showMessageDialog(null,"Formato de Endereço IP Inválido.","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
}
}
}
});
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setDefaultLookAndFeelDecorated( false );
setTitle("IPCalc 1.0 - Calculadora IP");
setResizable( false );
setSize( 600, 380);
show();
}
public static void main(String args[])
{
IPMain ip = new IPMain();
ip.addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent e )
{
System.exit(0);
}
}
);
}
}
/*
-
for( i=0;i<nsubredes;i++ ) { if(i==0||i==nsubredes-1) { linha.removeAllElements(); //rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+oct_rede[3]+""; primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(oct_rede[3]+1)+""; lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(oct_broad[3]-1)+""; //broa = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+oct_rede[3]+""; linha.addElement(rede); linha.addElement(primeiro_host); linha.addElement(lst_host); linha.addElement(broa); linha.addElement("Inválido"); oct_rede[3]+=steps; } else { linha.removeAllElements(); primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(oct_rede[3]+1)+""; lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(oct_broad[3]-1)+""; linha.addElement(rede); linha.addElement(primeiro_host); linha.addElement(lst_host); linha.addElement(broa); linha.addElement("Válido"); } oct_rede[3]+=steps; rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+oct_rede[indice]+""; linhas.addElement(linha); } }
// if(classe.equals("B")||classe.equals("B Privativo")) indice=2;
// if(classe.equals("A")||classe.equals("A Privativo")) indice=1;
// if(!(classe.equals("D Experimental")||classe.equals("E Experimental")))
// {
// if(classe.equals("C")||classe.equals("C Privativo")) indice=3;
// {
// }
//se for classe C
}
*/[/code]
O que pode ser?