版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验九: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024双方借款利息合同书
- 2024博士后研究人员聘用合同书
- 2024供应商供货合同
- 2024兼职医生聘用协议书
- 2024出国派遣务工合同
- 2021-2022学年高中英语语法23强调教案(含解析)新人教版必修1
- 材料作文素材
- 公司并购中协议的起草与协议范本
- 母爱的初一作文600字
- 部编版四年级下册道德与法治期末测试卷附答案(能力提升)
- 常减压蒸馏-常减压蒸馏装置的工艺流程(石油加工课件)
- 警犬训练器材规格参数表
- 第四单元 活动主题二 走进立法、司法机关 (教学设计)苏少版六年级下册综合实践活动
- 2023光伏发电站施工质量检查及验收规程
- 城市地下综合管廊机电施工组织设计
- 重症患者目标导向的早期活动
- 地面沉降监测分层标施工技术规程
- 江西省上饶市广丰区2022-2023学年数学四下期末考试试题含解析
- 水利监理人员配备导则
- 小小科学家《生物》模拟试卷A(附答案)
- 法律诉讼服务实施方案
评论
0/150
提交评论