好文档 - 专业文书写作范文服务资料分享网站

IP地址合法性判断及子网检测 - 实验评测报告

天下 分享 时间: 加入收藏 我要投稿 点赞

}

}

}

temp[0]=subnet_mask[i+1]。 //判断字符是否为数值型字符

if(!isdigit(temp[0]>> //isdigit(>为库函数,可以调用 { }

cout<<\中含有非数字的非法字符,error!\。 maskIsValid=false。 //mask不是数值,则设置为false

else if((len-3>==i> //表明mask是二位

{

temp[0]=subnet_mask[i+1]。 temp[1]=subnet_mask[i+2]。

if(!(isdigit(temp[0]> && isdigit(temp[1]>>> { } }

cout<<\中含有非数字的非法字符,error!\。 maskIsValid=false。

mask=atoi(temp>。 //自动把数字字符转换为对应的十进制数值的函数 if(mask<0 || mask>32>

maskIsValid=false。

else //表明mask为空或字节超出范围 { }

strcpy(this->subnet_mask,subnet_mask>。 //给subnet_mask赋值 strcpy(this->ip,ip>。 //给ip赋值

strcpy(this->ip_Temp,ip>。 //给ip_temp赋值

cout<<\为空或超出范围,error!\。

maskIsValid=false。 //若mask是三位数,则表明mask输入非法<其实为~32) /********************************************************************/ //判断mask,subnet,ip的合法性问题 void ipTest::AllJudgment(> {

//设置标志subnet地址是否合法的bool型变量,并调用subnetIsValid函数判断 bool subnetIsV=subnetIsValid(subnet_Temp>。

//设置标记ip地址是否合法的bool型变量,并调用ipIsValid函数判断 bool ipIsV=ipIsValid(ip_Temp>。

//设置标记mask与subnet地址是否匹配的bool型变量,并调用maskIsMatSubnet函数判断 bool maskIsMatSub=maskIsMatSubnet(mask,subnet_Temp>。 cout<

if(!maskIsValid> //表示返回的maskIsValid是false

/************************判断返回的值是否为真******************/ }

{ } else { }

if(!maskIsMatSub> { } else { }

if(!subnetIsV> { } else { } if(!ipIsV> { } else { } //都合法

if(maskIsValid && maskIsMatSub && subnetIsV && ipIsV> { }

print(>。

cout<<\地址合法!\。 //表示返回的ipIsV是false cout<<\地址非法!\。 cout<<\地址合法!\。 //表示返回的subnetIsV是false cout<<\地址非法!\。 cout<<\与subnet匹配!\。 //表示返回的maskIsMatSub是false

cout<<\与subnet不匹配,error!\。 cout<<\合法!\。

cout<<\输入非法!(mask为整数并在-32范围内>\。

//判断mask与subnet是否匹配

bool ipTest::maskIsMatSubnet(int mask,char *subnet_Temp> {

int nbsubnet[4]。//用于放十进制的各段地址

}

//调用把单个字符地址转换为十进制数值型地址<含四段)的函数,实现转换 split(subnet_Temp,nbsubnet>。 //subnet是A类地址

if(nbsubnet[0]>0 && nbsubnet[0]<127 && mask<8> { }

//subnet是B类地址

if(nbsubnet[0]>=128 && nbsubnet[0]<=191 && mask<16> {

//mask的值小于 }

//subnet是C类地址

if(nbsubnet[0]>=192 && nbsubnet[0]<=223 && mask<24> { }

//mask与subnet地址匹配 return true。

//mask的值小于

cout<<\与subnet不匹配,error!\。 return false。

cout<<\与subnet不匹配,error!\。 return false。 //mask的值小于

cout<<\与subnet不匹配,error!\。 return false。

//把单个字符地址转换为十进制数值型地址<含四段) void ipTest::split(char *chaddr,int *addr> { }

//ip,subnet地址中非法字符的判断 bool ipTest::NoIllegalChar(char *ch> {

char ch[]=\。 char *token,*dot[4]。 int iplen=0。

token=strtok(chaddr,ch>。 while(token!=NULL> { }

dot[iplen]=token。

addr[iplen]=atoi(dot[iplen]>。//atoi(>函数把字符数值转换为int型数值 iplen++。

token=strtok(NULL,ch>。

}

int i,len=strlen(ch>。 for(i=0。i { }

return true。

if(ch[i]-'0'>9 || ch[i]-'0'<0> { }

return false。

//判断ip是否合法

bool ipTest::ipIsValid(char *ip> {

/******************把地址分为四段,保存在dot[]中************/ char ch[]=\。 char ip_one[18]。 strcpy(ip_one,ip>。 char *token,*dot[4]。 int iplen=0。

//库函数strtok(>,以ch[]为界限来分段 token=strtok(ip_one,ch>。 while(token!=NULL> { }

if(iplen!=4> { }

int j,t=0。

for(j=0。j<=strlen(ip>。j++> { } if(t!=3> {

if(ip[j]=='.'> { }

t++。

cout<<\地址\的段数不是,error!\。 return false。 dot[iplen]=token。 iplen++。

token=strtok(NULL,ch>。//此时,第一个参数必须换为NULL

/*****************判断地址中的段数***************************/ /***************判断地址中的'.'是否正确**********************/

} int i。

cout<<\地址\中的'.'不是,error!\。 return false。

/************************判断地址是否含有非法字符,每段地址数值溢出**********************/ for(i=0。i { }

int flag=1。//首先设置为非法,即全 for(i=0。i { }

if(flag==1> { }

flag=1。//首先设置为非法,即全 for(i=0。i { }

if(flag==1> { }

cout<<\地址\全为全,error!\。 return false。 if(atoi(dot[i]>!=255> { }

flag=0。

cout<<\地址\全为全,error!\。 return false。 if(atoi(dot[i]>!=0> { }

//含有非的字段 flag=0。

if(!NoIllegalChar(dot[i]> || atoi(dot[i]>>255> { }

if(!NoIllegalChar(dot[i]>> //判断含有非法字符

cout<<\地址\中含有非数字的非法字符,error!\。 cout<<\地址\中含有不在-255间的数字,error!\。

if(atoi(dot[i]>>255> //判断数值溢出 return false。

/*****************判断全或全的情况**************************/

IP地址合法性判断及子网检测 - 实验评测报告

}}}temp[0]=subnet_mask[i+1]。//判断字符是否为数值型字符if(!isdigit(temp[0]>>//isdigit(>为库函数,可以调用{}cout<<\中
推荐度:
点击下载文档文档为doc格式
2gv424z4a23cwgi893aj3uh255c6he00c6j
领取福利

微信扫码领取福利

微信扫码分享