Hey Leutz...
ich hab ein Problem und weiß nicht wie ich es am besten lösen kann...
also es geht um dieses Programm: siehe <hier>
jedenfals muss ich jetzt ein vergleich machen bzw eine ausgrenzung...
beispiel:
eine Subnetzmaske: 255.255.129.0
diese Subnetzmaske wurde vorher in eine Binär zahl umgewandelt... dann wurden alle einzen bis zur ersten 0 gezählt...
jetzt muss ich haben Prüfen ob es eine Gültige SNM ist... die 255.255.129.0 ist keine gültige da nur diese zahlen gehen... vom 2 - 4 Oktett: 128, 192, 224, 240, 248, 252, 254 und 255.
so wie mache ich es am besten... mit einer Binären vergleich...
ich hab jetzt schon soweit das ich erst die einsen zählen und dann von dem punkt bis hin zur ersten 1 wenn eine 1 vorhanden ist es eine ungültige SNM...
Programm ausschnitt:
danke für eure hilfe schonmal im vorraus!!
PS:
also die aussortieren kann es schon... aber wenn eine Falsche ausgegeben wurde... sagt er erst "Ungültige SNM" und dann sie haben eine Klasse 'x' Adresse eingegeben!!
ich hab ein Problem und weiß nicht wie ich es am besten lösen kann...
also es geht um dieses Programm: siehe <hier>
jedenfals muss ich jetzt ein vergleich machen bzw eine ausgrenzung...
beispiel:
eine Subnetzmaske: 255.255.129.0
diese Subnetzmaske wurde vorher in eine Binär zahl umgewandelt... dann wurden alle einzen bis zur ersten 0 gezählt...
jetzt muss ich haben Prüfen ob es eine Gültige SNM ist... die 255.255.129.0 ist keine gültige da nur diese zahlen gehen... vom 2 - 4 Oktett: 128, 192, 224, 240, 248, 252, 254 und 255.
so wie mache ich es am besten... mit einer Binären vergleich...
ich hab jetzt schon soweit das ich erst die einsen zählen und dann von dem punkt bis hin zur ersten 1 wenn eine 1 vorhanden ist es eine ungültige SNM...
Programm ausschnitt:
Java:
private void initsubnetzmaske()
{
subnetzmaske = new int [4];
SNM = new int[4];
SNM_int = new int[5];
subnetzmaske[0]=Integer.parseInt(textfield1_1.getText());
subnetzmaske0 = Integer.toBinaryString(subnetzmaske[0]);
String subnetz0 = subnetzmaske0;
int SNM0 = 0;
int SNM0_1 = 0;
for(int i=0;i<subnetz0.length();++i){
if(subnetz0.charAt(i) != '1'){
break;
}
++SNM0;
}
for(int i=SNM0;i<subnetz0.length();++i){
if(subnetz0.charAt(i) == '1'){
JOptionPane.showMessageDialog(null,"Ungültige Subnetzmaske");
}
++SNM0_1;
}
subnetzmaske[1]=Integer.parseInt(textfield1_2.getText());
subnetzmaske1 = Integer.toBinaryString(subnetzmaske[1]);
String subnetz1 = subnetzmaske1;
int SNM1 = 0;
int SNM1_1 = 0;
for(int i=0;i<subnetz1.length();++i){
if(subnetz1.charAt(i) != '1'){
break;
}
++SNM1;
}
for(int i=SNM1;i<subnetz1.length();++i){
if(subnetz1.charAt(i) == '1'){
JOptionPane.showMessageDialog(null,"Ungültige Subnetzmaske");
}
++SNM1_1;
}
subnetzmaske[2]=Integer.parseInt(textfield1_3.getText());
subnetzmaske2 = Integer.toBinaryString(subnetzmaske[2]);
String subnetz2 = subnetzmaske2;
int SNM2 = 0;
int SNM2_1 = 0;
for(int i=0;i<subnetz2.length();++i){
if(subnetz2.charAt(i) !='1'){
break;
}
++SNM2;
}
for(int i=SNM2;i<subnetz2.length();++i){
if(subnetz2.charAt(i) == '1'){
JOptionPane.showMessageDialog(null,"Ungültige Subnetzmaske");
}
++SNM2_1;
}
subnetzmaske[3]=Integer.parseInt(textfield1_4.getText());
subnetzmaske3 = Integer.toBinaryString(subnetzmaske[3]);
String subnetz3 = subnetzmaske3;
int SNM3 = 0;
int SNM3_1 = 0;
for(int i=0;i<subnetz3.length();++i){
if(subnetz3.charAt(i) != '1'){
break;
}
++SNM3;
}
for(int i=SNM3;i<subnetz3.length();++i){
if(subnetz3.charAt(i) == '1'){
JOptionPane.showMessageDialog(null,"Ungültige Subnetzmaske");
}
++SNM3_1;
}
// Oktett 1
SNM[0] = SNM0;
// Oktett 1 + Oktett 2
SNM[1] = SNM0 + SNM1;
// Oktett 1 + Oktett 2 + Oktett 3
SNM[2] = SNM0 + SNM1 + SNM2;
// Oktett 1 + Oktett 2 + Oktett 3 + Oktett 4
SNM[3] = SNM0 + SNM1 + SNM2 +SNM3;
SNM_int[0] = SNM0_1;
SNM_int[1] = SNM1_1;
SNM_int[2] = SNM2_1;
SNM_int[3] = SNM3_1;
SNM_int[4] = SNM0_1 + SNM1_1 + SNM2_1 + SNM3_1;
System.out.println(SNM[0]);
System.out.println(SNM[1]);
System.out.println(SNM[2]);
System.out.println(SNM[3]);
System.out.println(SNM_int[0]);
System.out.println(SNM_int[1]);
System.out.println(SNM_int[2]);
System.out.println(SNM_int[3]);
System.out.println(SNM0_1);
System.out.println(SNM1_1);
System.out.println(SNM2_1);
System.out.println(SNM3_1);
}
Java:
if(MySource==button2){
if((ip_adresse[0]>0) && (ip_adresse[0]<=127)&& (ip_adresse[1]<=255)&& (ip_adresse[2]<=255)&& (ip_adresse[3]<=255)){
if((SNM[1]>8) && (SNM[3]<=30) && (SNM_int[4]!=8)){
JOptionPane.showMessageDialog(null, "Sie haben eine Klasse A eingegeben!");
}else{
textfield1_1.setText("255");
textfield1_2.setText("0");
textfield1_3.setText("0");
textfield1_4.setText("0");
JOptionPane.showMessageDialog(null,"Die Subnetzmaske wurde auf Standard gesetzt!");
}
}else{
if((ip_adresse[0]>=128) && (ip_adresse[0]<=191)&& (ip_adresse[1]<=255)&& (ip_adresse[2]<=255)&& (ip_adresse[3]<=255)){
if((SNM[2]>16)&&(SNM[3]<=30) && (SNM_int[4]==0)){
JOptionPane.showMessageDialog(null, "Sie haben eine Klasse B eingegeben!");
}else{
textfield1_1.setText("255");
textfield1_2.setText("255");
textfield1_3.setText("0");
textfield1_4.setText("0");
JOptionPane.showMessageDialog(null,"Die Subnetzmaske wurde auf Standard gesetzt!");
}
}else{
if((ip_adresse[0]>=192) && (ip_adresse[0]<=223) && (ip_adresse[1]<=255)&& (ip_adresse[2]<=255)&& (ip_adresse[3]<=255)){
if((SNM[3]>24) && (SNM[3]<=30)&& (SNM_int[4]<8)){
JOptionPane.showMessageDialog(null, "Sie haben eine Klasse C eingegeben!");
}else{
textfield1_1.setText("255");
textfield1_2.setText("255");
textfield1_3.setText("255");
textfield1_4.setText("0");
JOptionPane.showMessageDialog(null,"Die Subnetzmaske wurde auf Standard gesetzt!");
}
}else{
JOptionPane.showMessageDialog(null,"Bitte geben sie vorher eine IP-Adresse ein!");
}
}
}
}
danke für eure hilfe schonmal im vorraus!!
PS:
also die aussortieren kann es schon... aber wenn eine Falsche ausgegeben wurde... sagt er erst "Ungültige SNM" und dann sie haben eine Klasse 'x' Adresse eingegeben!!
Zuletzt bearbeitet: