java IP地址网段计算的示例代码
根据IP地址与字段掩码计算网段最大最小IP
packagec04;
importjava.net.UnknownHostException;
publicclassIPNetworkSegmentCalculation{
publicstaticvoidmain(String[]args)throwsUnknownHostException{
Stringip="192.168.126.2";
Stringmask="255.255.255.0";
findMask();
}
publicstaticvoidfindMask(){
Stringmask="255.255.255.0";
Stringip="192.168.126.2";
String[]ipArray=ip.split("[.]");
String[]maskArray=mask.split("[.]");
StringminIp="";
StringmaxIp="";
intsubMask=0;
for(inti=0;i
Java根据网段计算子网掩码,起始IP,结束IP
/**
*IP的相关计算
*@authorzengchaowang
*@version1.0
*
*/
publicclassIpCaculate{
/**
*根据掩码位数计算掩码
*@parammaskIndex掩码位
*@return子网掩码
*/
publicstaticStringgetNetMask(StringmaskIndex){
StringBuildermask=newStringBuilder();
IntegerinetMask=0;
try{
inetMask=Integer.parseInt(maskIndex);
}catch(NumberFormatExceptione){
System.out.println(e.getMessage());
returnnull;
}
if(inetMask>32){
returnnull;
}
//子网掩码为1占了几个字节
intnum1=inetMask/8;
//子网掩码的补位位数
intnum2=inetMask%8;
intarray[]=newint[4];
for(inti=0;i255||ipArray[i]<0||netMaskArray[i]>255||netMaskArray[i]<0){
returnnull;
}
ipArray[i]=ipArray[i]&netMaskArray[i];
if(i==3){
startIp.append(ipArray[i]+1);
}else{
startIp.append(ipArray[i]+".");
}
}catch(NumberFormatExceptione){
System.out.println(e.getMessage());
}
}
returnstartIp.toString();
}
/**
*根据网段计算结束IP
*@paramsegment
*@return结束IP
*/
publicstaticStringgetEndIp(Stringsegment){
StringBufferendIp=newStringBuffer();
StringstartIp=getStartIp(segment);
if(segment==null){
returnnull;
}
Stringarr[]=segment.split("/");
StringmaskIndex=arr[1];
//实际需要的IP个数
inthostNumber=0;
intstartIpArray[]=newint[4];
try{
hostNumber=1<<32-(Integer.parseInt(maskIndex));
for(inti=0;i<4;i++){
startIpArray[i]=Integer.parseInt(startIp.split("\\.")[i]);
if(i==3){
startIpArray[i]=startIpArray[i]-1;
break;
}
}
startIpArray[3]=startIpArray[3]+(hostNumber-1);
}catch(NumberFormatExceptione){
System.out.println(e.getMessage());
}
if(startIpArray[3]>255){
intk=startIpArray[3]/256;
startIpArray[3]=startIpArray[3]%256;
startIpArray[2]=startIpArray[2]+k;
}
if(startIpArray[2]>255){
intj=startIpArray[2]/256;
startIpArray[2]=startIpArray[2]%256;
startIpArray[1]=startIpArray[1]+j;
if(startIpArray[1]>255){
intk=startIpArray[1]/256;
startIpArray[1]=startIpArray[1]%256;
startIpArray[0]=startIpArray[0]+k;
}
}
for(inti=0;i<4;i++){
if(i==3){
startIpArray[i]=startIpArray[i]-1;
}
if(""==endIp.toString()||endIp.length()==0){
endIp.append(startIpArray[i]);
}else{
endIp.append("."+startIpArray[i]);
}
}
returnendIp.toString();
}
}
根据网段计算起始IP网段格式:x.x.x.x/x
网段内需要的IP数量为:2的(32-掩码位)次方个。
因为一个网段0一般为网络地址,255一般为广播地址,所以第一个可用IP起始IP计算:网段与掩码相与之后加一的IP地址,结束IP为通过计算需要的所有IP数然后做累加运算,超过256则进位进行运算。
到此这篇关于javaIP地址网段计算的示例代码的文章就介绍到这了,更多相关javaIP地址计算内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。