IP地址的合法性和子网判断终极版(带ABCDE类网分类、带指导学渣如何使用代码).docxVIP

  • 11
  • 0
  • 约4.98千字
  • 约 7页
  • 2018-03-31 发布于河南
  • 举报

IP地址的合法性和子网判断终极版(带ABCDE类网分类、带指导学渣如何使用代码).docx

IP地址的合法性和子网判断终极版(带ABCDE类网分类、带指导学渣如何使用代码)

IP地址的合法性和子网判断终极版(带ABCDE类网分类、带指导学渣如何使用代码)#include iostream.h #include string.h #include stdlib.h #include stdio.h #include math.h #include ctype.h //类结构int flag;classipTest{ char ip[15]; //定义ip数组,存放ip地址char subnetPlusMask[18]; //定义subnetPlusMask数组,存放子网号和子网掩码中1的个数char subnet[18]; //定义subnet数组,存放子网号char TempIp[15]; //定义TempIp数组,存放临时的ip地址char TempSub[18]; //定义TempSub数组,存放临时的子网号int mask; //定义整型mask,存放子网掩码中1的个数boolmaskIsValid;//定义布尔值maskIsValid,存放判断mask真值的变量public: ipTest(char *,char *); //定义ipTest函数~ipTest(){}; boolNoIllegalChar(char *); //非法字符的判断boolipIsValid(char *); //判断IP地址是否合法boolsubnetIsValid(char *); //判断子网号是否合法void belong(); //判断IP是否为子网成员charTellIpType(int num) ;print();//定义输出函数print }; //主函数void main(intargc,char *argv[]){ flag=1;if(argc != 3){ //判断参数格式是否正确cout 命令格式错误! endl 正确的命令格式应该是:程序名子网号/掩码ip地址 endl; return; } else{if(strlen(argv[1]) 18){ //先判断最简单的错误,子网号及子网掩码长度和是否超出cout 子网号以及子网掩码长度过长!; return; } if(strlen(argv[2]) 15){ //ip地址长度是否超出cout ip地址长度过长!; return; } ipTest test(argv[1],argv[2]); //实例化ipTest类test.print(); //完成相应判别并输出结果} } //构造函数ipTest::ipTest(char* subnetPlusMask,char *ip){ maskIsValid = true; char temp[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-3){ //初始化mask和maskIsValidif(i == smLen-2){ temp[0] = subnetPlusMask[i+1]; if(!isdigit(temp[0])) //判断temp中的值是否为字符maskIsValid = false; } else if(i == smLen-3){ temp[0] = subnetPlusMask[i+1]; temp[1] = subnetPlusMask[1+2]; if(!(isdigit(temp[0])isdigit(temp[1]))) //判断temp中的值是否为字符maskIsValid = false; } mask = atoi(temp); //将temp中的字符数值化if(mask 0 || mask 32) //判断mask值是否超出范围maskIsValid = false; } else //用十进制数表示的掩码中1的个数只能是一位数或者两位数maskIsValid = false; strcpy(this-subnetPlusMask,subnetPlusMask);

文档评论(0)

1亿VIP精品文档

相关文档