ip地址的合法性及子网判断_第1页
ip地址的合法性及子网判断_第2页
ip地址的合法性及子网判断_第3页
ip地址的合法性及子网判断_第4页
ip地址的合法性及子网判断_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验九:IP地址的合法性及子网判断#include<iostream.h>#include<string.h>#include<stdlib.h>#include<ctype.h>//类结构classipTest{charip[15];//定义ip数组,存放ip地址charsubnetPlusMask[18];//定义subnetPlusMask数组,存放子网号和子网掩码中1的个数charsubnet[18];//定义subnet数组,存放子网号charTempIp[15];//定义TempIp数组,存放临时的ip地址charTempSub[18];//定义TempSub数组,存放临时的子网号intmask;//定义整型mask,存放子网掩码中1的个数boolmaskIsValid;//定义布尔值maskIsValid,存放判断mask真值的变量public:ipTest(char*,char*);//定义ipTest函数ipTest(){};boolNoIllegalChar(char*);//非法字符的判断boolipIsValid(char*);//判断IP地址是否合法boolsubnetIsValid(char*);//判断子网号是否合法voidbelong();//判断IP是否为子网成员print();//定义输出函数print};//主函数voidmain(intargc,char*argv[]){if(argc!=3){//判断参数格式是否正确cout<<"Pleaseinputcommand:ip_testsubnet/maskip";return;}else{if(strlen(argv[1])>18){//先判断最简单的错误,子网号及子网掩码长度和是否超出cout<<"subnet/maskistoolong";return;}if(strlen(argv[2])>15){//ip地址长度是否超出cout<<"ipAddressistoolong";return;}ipTesttest(argv[1],argv[2]);//实例化ipTest类test.print();//完成相应判别并输出结果}}//构造函数ipTest::ipTest(char*subnetPlusMask,char*ip){maskIsValid=true;chartemp[2];//把'/'前的字符复制到subnet字符数组中intsmLen=strlen(subnetPlusMask);//定义smLen为subnetPlusMask的长度for(inti=0;i<smLen&&subnetPlusMask[i]!='/';i++){this->subnet[i]=subnetPlusMask[i];//对subnet数组赋值,值为subnetPlusMask中的数值this->TempSub[i]=subnetPlusMask[i];//对TempSub数组赋值,值为subnetPlusMask中的数值}subnet[i]='\0';//给数组加上结束符TempSub[i]='\0';//给数组加上结束符if(i>=smLen-2){//初始化mask和maskIsValidif(i==smLen-2){temp[0]=subnetPlusMask[i+1];if(!isdigit(temp[0]))//判断temp中的值是否为字符maskIsValid=false;}else{if(i==smLen-3){//判断IP是否为子网成员,判断子网号与掩码是否匹配,以及子网号、主机号全0全1问题voidipTest::belong(){intsubLen=strlen(subnet);intipLen=strlen(ip);unsignedintiIPA,iSubA,iMask;unsignedcharsubA[4],ipA[4];chartemp[3];inti,j,t=0;for(i=0,j=0;i<subLen;i++){//不用检错if(subnet[i]!='.')temp[j++]=subnet[i];//temp数组中放'.'间的串else{subA[3-t]=atoi(temp);//subA数组中放'.'间的数据j=0;t++;temp[0]=temp[1]=temp[2]='\0';}}subA[0]=atoi(temp);temp[0]=temp[1]=temp[2]='\0';iSubA=*(unsignedint*)subA;//iSubA中放subnet中'.'除外的串对应的数for(i=0,j=0,t=0;i<ipLen;i++){//不用再检错if(ip[i]!='.')temp[j++]=ip[i];else{ipA[3-t]=atoi(temp);j=0;t++;temp[0]=temp[1]=temp[2]='\0';}}ipA[0]=atoi(temp);iIPA=*(unsignedint*)ipA;//iIPA中放IP中'.'除外的串对应的数//获得掩码iMask=0xffffffff;iMask<<=(32-mask);if((iSubA|iMask)!=iMask){//说明sub与mask不匹配cout<<"subnetandmasknotmatch!";return;}if((iSubA^iMask)==0){//说明子网号全1cout<<"subnetisall1!";return;}if((iSubA&iMask)==0){//说明子网号全0cout<<"subnetisall0!";return;}if((iSubA)==(iIPA&iMask)){//IP和掩码与,结果和子网号比较if((iIPA|iMask)==iMask){//说明主机号全0cout<<"Ipaddressisall0!";return;}if((iIPA|iMask)==0xffffffff){//说明主机号全1cout<<"Ipaddressisall1!";return;}//ip属于subn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论