一个简单的子网划分程序(java)subnetting

来源:互联网 发布:av天堂网 改域名了么 编辑:程序博客网 时间:2024/03/29 20:58
/***  划分子网*///import java.io.*;public class subnetting{public static void main(String [] args)throws IOException{String ip; //用于接收要划分的IPint s;   //用于接收以要划分的子网数int n;     //输入子网数对应的二进制位数System.out.println("---------------划分子网---------------");//输入要划分的IP地址:ipSystem.out.println("请输入要划分的IP地址(格式为:x1.x2.x3.x4):");System.out.print("→:");InputStreamReader isr = new InputStreamReader(System.in);BufferedReader br = new BufferedReader(isr);ip = br.readLine();//截取x1int index1 = ip.indexOf('.');String st1 = ip.substring(0,index1);int x1=Integer.parseInt(st1);//把String类型的st转化成int型//截取x2int index2= ip.indexOf('.',index1+1);String st2 = ip.substring(index1+1,index2);int x2=Integer.parseInt(st2);//把String类型的st转化成int型//截取x3int index3= ip.indexOf('.',index2+1);String st3 = ip.substring(index2+1,index3);int x3=Integer.parseInt(st3);//把String类型的st转化成int型//截取x4//A类if(x1>0&&x1<=126){System.out.println("本IP地址能划分划分的最大子网数为: "+((int)Math.pow(2,24-2)-2));}//B类if(x1>=128&&x1<=191){System.out.println("本IP地址能划分划分的最大子网数为: "+((int)Math.pow(2,16)-2));}//C类if(x1>=192&&x1<=223){System.out.println("本IP地址能划分划分的最大子网数为: "+((int)Math.pow(2,8-2)-2));}//输入要划分的子网数数:sSystem.out.println("请输入要划分的子网数:");System.out.print("→:");String subnet_num= br.readLine();s = Integer.parseInt(subnet_num);br.close();//求所输入子网数对应的二进制位数:nfor( n=1 ;(Math.pow(2,n)-2)<s;n++);System.out.println("--------------------------------------"); //求子网掩码int sum = 0;for(int i=0;i<n;i++){sum = sum +(int)Math.pow(2,(7-i));}System.out.println("子网掩码为:");//A类 if(x1>0&&x1<=126){if(n<=8){System.out.println("255."+sum+".0.0");}else if(n>8&&n<=16){n = n-8;sum = 0;for(int i=0;i<n;i++){sum = sum +(int)Math.pow(2,(7-i));}System.out.println("255.255."+sum+".0");}else{n = n-16;sum = 0;for(int i=0;i<n;i++){sum = sum +(int)Math.pow(2,(7-i));}System.out.println("255.255.255."+sum);}}//B类if(x1>=128&&x1<=191){if(n<=8){System.out.println("255.255."+sum+".0");}else{n = n-8;sum = 0;for(int i=0;i<n;i++){sum = sum +(int)Math.pow(2,(7-i));}System.out.println("255.255.255."+sum);}}//C类if(x1>=192&&x1<=223){System.out.println("255.255.255."+sum);}//求每网段主机数System.out.println("每网段主机数:");//A类if(x1>0&&x1<=126){System.out.println(Math.pow(2,(32-n))-2);}//B类if(x1>=128&&x1<=191){System.out.println(Math.pow(2,(16-n))-2);}//C类if(x1>=192&&x1<=223){System.out.println(Math.pow(2,(8-n))-2);}//输出各子网IP范围System.out.println("各子网IP范围如下:");//A类if(x1>0&&x1<=126){if(n<=8){for (int i=1,sub_id=0; i<Math.pow(2,n)-1;i++ ){sub_id= (int)Math.pow(2,(8-n))*i;System.out.print("<"+i+">"+" ");System.out.println(x1+"."+sub_id+".0."+1+"---"+x1+"."+(int)(sub_id+Math.pow(2,(8-n))-1)+"."+255.254);}}if(n>8&&n<=16){int subnet_id =0;//定义子网号for (int i=0; i<Math.pow(2,8);i++ ){if(i==0){for (int k=1,sub_id=0;k<=Math.pow(2,n-8)-1;k++){sub_id = (int)Math.pow(2,(16-n))*k;System.out.print("<"+(++subnet_id)+">"+" ");System.out.println(x1+"."+i+"."+sub_id+"."+1+"------"+x1+"."+i+"."+(sub_id+(int)Math.pow(2,(16-n)))+"."+254);}}else{for (int k=0,sub_id=0;k<=Math.pow(2,n-8)-1;k++){if((i==255)&&k==(Math.pow(2,n-8)-1)){break;}sub_id = (int)Math.pow(2,(16-n))*k;System.out.print("<"+(++subnet_id)+">"+" ");System.out.println(x1+"."+i+"."+(sub_id)+"."+1+"------"+x1+i+"."+(sub_id+(int)Math.pow(2,(16-n)))+"."+254);}}}}if(n>16&&n<24){int subnet_id =0;//定义子网号for(int m=0;m<Math.pow(2,8);m++){if(m==0){for (int i=0; i<Math.pow(2,8);i++ ){if(i==0){for (int k=1,sub_id=0;k<=Math.pow(2,n-16)-1;k++){sub_id = (int)Math.pow(2,(24-n))*k;System.out.print("<"+(++subnet_id)+">"+" ");System.out.println(x1+"."+m+"."+i+"."+(sub_id+1)+"------"+x1+"."+m+"."+i+"."+(sub_id+(int)Math.pow(2,(24-n))-2));}}else{for (int k=0,sub_id=0;k<=Math.pow(2,n-16)-1;k++){sub_id = (int)Math.pow(2,(24-n))*k;System.out.print("<"+(++subnet_id)+">"+" ");System.out.println(x1+"."+m+"."+i+"."+(sub_id+1)+"------"+x1+"."+m+"."+i+"."+(sub_id+(int)Math.pow(2,(24-n))-2));}}}}else{ for (int i=0; i<Math.pow(2,8);i++ ){for (int k=0,sub_id=0;k<=Math.pow(2,n-16)-1;k++){if(m==255&&(i==255)&&k==(Math.pow(2,n-16)-1)){break;}sub_id = (int)Math.pow(2,(24-n))*k;System.out.print("<"+(++subnet_id)+">"+" ");System.out.println(x1+"."+m+"."+i+"."+(sub_id+1)+"------"+x1+"."+m+"."+i+"."+(sub_id+(int)Math.pow(2,(24-n))-2));}}}}}}//B类if(x1>=128&&x1<=191){if(n<=8){for (int i=1,sub_id=0; i<Math.pow(2,n)-1;i++ ){sub_id= (int)Math.pow(2,(8-n))*i;System.out.print("<"+i+">"+" ");System.out.println(x1+"."+x2+"."+sub_id+"."+1+"---"+x1+"."+x2+"."+(int)(sub_id+Math.pow(2,(8-n))-1)+"."+254);}}if(n>8&&n<16){int subnet_id =0;//定义子网号for (int i=0; i<Math.pow(2,8);i++ ){if(i==0){for (int k=1,sub_id=0;k<=Math.pow(2,n-8)-1;k++){sub_id = (int)Math.pow(2,(16-n))*k;System.out.print("<"+(++subnet_id)+">"+" ");System.out.println(x1+"."+x2+"."+i+"."+(sub_id+1)+"------"+x1+"."+x2+"."+i+"."+(sub_id+(int)Math.pow(2,(16-n))-2));}}else{for (int k=0,sub_id=0;k<=Math.pow(2,n-8)-1;k++){if((i==255)&&k==(Math.pow(2,n-8)-1)){break;}sub_id = (int)Math.pow(2,(16-n))*k;System.out.print("<"+(++subnet_id)+">"+" ");System.out.println(x1+"."+x2+"."+i+"."+(sub_id+1)+"------"+x1+"."+x2+"."+i+"."+(sub_id+(int)Math.pow(2,(16-n))-2));}}}} }//C类if(x1>=192&&x1<=223){for (int i=1,sub_id=0; i<Math.pow(2,n)-1;i++ ){sub_id= (int)Math.pow(2,(8-n))*i;System.out.print("<"+i+">"+" ");System.out.println(x1+"."+x2+"."+x3+"."+(sub_id+1)+"---"+x1+"."+x2+"."+x3+"."+((int)sub_id+Math.pow(2,(8-n))-2));}}System.out.println("☆☆--子--网--☆--划---分--☆--完--毕--☆☆");}}



原创粉丝点击