版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国计量学院现代科技学院课程设计报告本课程设计名称 ip地址的合法性及子网判断 课 程 设 计 报 告 目 录一、设计的目的和要求11.目的1二、设计任务2三、设计方案分析2(一)总体设计2(二)模块设计4四、调试与运行4(一) 调试中遇到的问题和解决办法4(二) 运行说明5(三) 运行效果展示5五、设计体会与建议8附录一:参考文献8附录二:源代码9附 件:中国计量学院现代科技学院课程设计报告 p.1ip合法性和子网的判断一、设计的目的和要求1.目的掌握ip地址的分类,准确理解子网、掩码的概念,确切地明了ip地址的合法格式。并判断该地址是否属于一个给定的子网。判断ip地址属于a b c那类网。
2、2.要求根据后面介绍的ip地址与子网划分的知识,编写程序判断ip地址的合法性及属于子网。1) 以命令行形式运行: ipaddress subnet_address/mask ip_address其中,ipaddress为程序名,subnet_address为子网地址,mask为掩码,ip_address为ip地址2) 判断ip地址属于a b c那类网。3)判断subnet和ip_addr的合法性。在判断ip地址合法性时要自行编写代码,不要使用任何inet函数。判断时要考虑各种情况,全面分析问题。4)判断掩码的合法性。譬如说mask的值为负数或者大与32,这时输入的掩码就不合法。 5)在ip地址
3、合法,掩码合法以及子网号也合法的前提下,判断ip_addr是否属于subnet。6)输出命令行中的ip是否合法,掩码是否合法,子网号码是否合法(可适当给出不合法的原因)以及ip_addr是否属于子网subnet。7)还可以判断子网号,主机号全0,全1问题。中国计量学院现代科技学院课程设计报告 p.2二、设计任务通过程序正确的实现对ip地址合理性的判断;当给定一ip地址时,本程序能实现对其ip地址、子网地址、掩码的合法性做出正确的判断,以及能判断该ip地址是否属于子网,和ip地址属于a b c哪类网络 三、设计方案分析(一)总体设计1.分别输入子网号、掩码和ip地址。2.分别判断子网号、掩码和i
4、p地址的基本格式是否合法。3.如果三者的基本格式都合法,才调用判定“ip地址是否为子网成员”的函数。该函数同时判别子网号与掩码是否匹配,子网号为全0或全1,主机号为全0、全1.4.如果三者的基本格式都合法,判断ip地址属于a b c哪类网 中国计量学院现代科技学院课程设计报告 p.3 (程序流程图-1)中国计量学院现代科技学院课程设计报告 p.4(二)模块设计ip合法性及子网的判断判断模块流量绘制模块信息统计模块界面设计判断功能解析输入的ip统计同一ip包数量(模块流程图-2)四、调试与运行(一) 调试中遇到的问题和解决办法1. 输入命令行进行运行时,却发现不管我们输入的子网地址是否合法,运行
5、结果都显示:subnetisinvalid。我们分析了很久也找不到原因,无奈我们再一次寻求同学的帮助。他只是把整个程序大致浏览了一下就发现了错误,原来我们把charip15,charsubnetplusmask18,charsubnet18,chartempip15这几个变量设置成了私有变量,导致后面的程序不能访问。2. 输入192.168.1.0/24 192.168.1.55 显示出现不属于该子网,这是错误的。然后在(isuba&imask)中发现了问题所在。3. 出现很多的地方少了,然后经过我详细的查找得以解决。4. 发现很多词语没有定义,然后经过查找发现定义类时,单词打错了。中国计量学
6、院现代科技学院课程设计报告 p.5(二) 运行说明程序编译成功后,打开cmd,然后打入cd d:/kcsj/debug(程序生成的debug文件路径下),再进行打入 testip(程序文件名)192.168.1.0/24 192.168.1.55(ipaddresssubnet_address/mask ip_address) ,然后会出现运行结果,查看ip地址ip地址、子网地址、掩码的合法性,以及能判断该ip地址是否属于子网,和ip地址属于a b c那类网络。(三) 运行效果展示(1) 在命令提示窗口中输入命令:testip 192.1/33 198.1.1;testip 256.1.1.0
7、/24 256.1.1.55详细的判断ip地址、子网地址、掩码的合法性中国计量学院现代科技学院课程设计报告 p.6(2) 在命令提示窗口中输入命令:testip 19.16.1.0/24 19.16.1.55ip地址属于该子网,并且ip地址属于a类网(3) 在命令提示窗口中输入命令:testip 192.16.1.0/24 168.125.168.192ip地址不属于该子网,并且ip地址属于b类网中国计量学院现代科技学院课程设计报告 p.7(4) 在命令提示窗口中输入命令:testip 192.168.1.0/24 192.168.2.55ip地址不属于该子网,并且ip地址属于c类网(5) 在
8、命令提示窗口中输入命令:testip 192.168.1.0/24 192.168.1.55ip地址属于该子网,并且ip地址属于c类网中国计量学院现代科技学院课程设计报告 p.8五、设计体会与建议这次课程设计,我收获了很多东西。通过上网和到图书馆查阅资料,我更加深入的学习了c语言,并利用所学知识设计,充分锻炼,增强了我的程序设计能力,使我加深了对理论知识的理解和掌握。充分体会到了理论固然重要,如果没有实践去验证,那也只是停在理论层面上,它的现实意义将无法得到体现。所以,这次课程设计是理论与实践的结合,增强了我在这方面的能力。通过这次课程设计,我更加深刻的理解了ip地址的合法性,ip地址与子网的
9、从属关系,子网与子网掩码的关系。在判断ip地址是否属于一个子网时,我对ip地址的分类以及子网划分有了更加深刻的理解。在这次课程设计的过程中,我遇到了很多问题,但经过老师和同学的帮助,我解决了这些问题,并学到了很多知识,在此,对老师和同学表示真挚的感谢。附录一:参考文献1 魏权龄.数据包络分析(dea)j.科学通报,2000,45(17):1793-1808.2 张尧学,郭国强,王晓春,赵艳标。计算机网络与internet教程第2版。清华大学出版社,2006,11。3 谢希仁,计算机网络(第5版),电子工业出版社,2008-014 谢希仁,计算机网络释疑与习题解答,电子工业出版社,2011-04
10、5 谭浩强,c+程序设计,清华大学出版社,2004-06中国计量学院现代科技学院课程设计报告 p.9附录二:源代码#include #include #include #include #include #include using namespace std;/iptest类定义class iptestchar ip15; /用于存放ip地址char ip_temp15; /用于存放ip地址char subnet_mask18; /用于存放subnet_mask地址char subnet18; /用于存放subnet地址 char subnet_temp18; /用于存放subnet地址in
11、t mask; /用于存放mask(1的个数)bool maskisvalid; /用于判断的个数是否合适,或是否与subnet匹配public:iptest(char *,char *); /自定义初始化类函数iptest(); /析构函数bool ipisvalid(char *); /判断ip是否合法bool subnetisvalid(char *); /判断子网号subnet是否合法bool noillegalchar(char *); /ip,subnet地址中非法字符的判断bool maskismatsubnet(int,char *);/判断mask与subnet是否匹配voi
12、d alljudgment(); /判断mask,subnet,ip的合法性问题 void print(); /判断ip是否为子网成员,并输出判断结果void split(char *,int *); /把单个字符地址转换为十进制数值型地址(含四段)int tobinary(int a); /十进制int型数据转换为二进制int型数据char * tostring(int *a);/把二进制int型数据转换为一个整体的二进制字符型数据;/main主函数int main(int argc,char *argv) /自动读取数据/cout目录地址:argv0endl; /argv0表示iptest
13、.exe的保存目录地址中国计量学院现代科技学院课程设计报告 p.10coutsubnet_mask : argv1endl; /argv1表示第二个参数,即subnet/mask coutip地址: argv2endlendl;/argv2表示第三个参数,即ip/判断段数是否输入合法if(argc!=3) /argc表示输入的参数个数,无参数输入时,其值为,因为默认argv0总是有的cout18)cout15)coutip 输入非法!;system(pause);return 0;iptest test(argv1,argv2); /实例化类,传入两个参数test.alljudgment();
14、/调用函数,判断mask,subnet,ip的合法性问题system(pause);/系统暂停return 0;/构造函数中国计量学院现代科技学院课程设计报告 p.11iptest:iptest(char *subnet_mask,char *ip)maskisvalid=true; /设置maskisvalid默认为合法char temp2;/定义变量int i,len;len=strlen(subnet_mask); /*从subnet/mask中分离出subnet地址*/for(i=0;isubneti=subnet_maski;this-subnet_tempi=subnet_mask
15、i;subnet_tempi=0; subneti=0; /*判断mask是否为数值*/if(len-(i+1)0) /判断mask是否为一/二位字节if(len-(i+1)=1) /表明mask是一位temp0=subnet_maski+1;/判断字符是否为数值型字符if(!isdigit(temp0) /isdigit()为库函数,可以调用coutmask中含有非数字的非法字符,error!endl;maskisvalid=false; /mask不是数值,则设置为falseelse if(len-3)=i) /表明mask是二位 temp0=subnet_maski+1; temp1=s
16、ubnet_maski+2; if(!(isdigit(temp0) & isdigit(temp1) coutmask中含有非数字的非法字符,error!endl;中国计量学院现代科技学院课程设计报告 p.12 maskisvalid=false; mask=atoi(temp); /自动把数字字符转换为对应的十进制数值的函数if(mask32)maskisvalid=false;else /表明mask为空或字节超出范围coutmask为空或超出范围,error!subnet_mask,subnet_mask); /给subnet_mask赋值strcpy(this-ip,ip); /给i
17、p赋值strcpy(this-ip_temp,ip); /给ip_temp赋值/判断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函数判断bo
18、ol maskismatsub=maskismatsubnet(mask,subnet_temp);coutendl; /*判断返回的值是否为真*/中国计量学院现代科技学院课程设计报告 p.13if(!maskisvalid) /表示返回的maskisvalid是falsecoutmask error!(mask为整数并在-32范围内)endl;/*elsecoutmask合法!endl;*/*if(!maskismatsub)/表示返回的maskismatsub是falsecoutmask与subnet不匹配,error!endl;elsecoutmask与subnet匹配!endl;*/i
19、f(!subnetisv)/表示返回的subnetisv是falsecoutsubnet error!endl;/*elsecoutsubnet地址合法!endl;if(!ipisv)/表示返回的ipisv是falsecoutip地址非法!endl;中国计量学院现代科技学院课程设计报告 p.14elsecoutip地址合法!0 & nbsubnet0127 & mask8)/mask的值小于coutmask与subnet不匹配,error!=128 & nbsubnet0=191 & mask16) /mask的值小于coutmask与subnet不匹配,error!=192 & nbsubn
20、et0=223 & mask24)中国计量学院现代科技学院课程设计报告 p.15/mask的值小于coutmask与subnet不匹配,error!endl;return false;/mask与subnet地址匹配return true;/把单个字符地址转换为十进制数值型地址(含四段)void iptest:split(char *chaddr,int *addr)char ch= .;char *token,*dot4;int iplen=0;token=strtok(chaddr,ch);while(token!=null)dotiplen=token;addriplen=atoi(do
21、tiplen);/atoi()函数把字符数值转换为int型数值iplen+;token=strtok(null,ch);/ip,subnet地址中非法字符的判断bool iptest:noillegalchar(char *ch)int i,len=strlen(ch);for(i=0;i9 | chi-00)return false;中国计量学院现代科技学院课程设计报告 p.16return true;/判断ip是否合法bool iptest:ipisvalid(char *ip)char ch= .;char ip_one18;strcpy(ip_one,ip);char *token,*
22、dot4;int iplen=0;/库函数strtok(),以ch为界限来分段token=strtok(ip_one,ch);while(token!=null)dotiplen=token;iplen+;token=strtok(null,ch);/此时,第一个参数必须换为nullif(iplen!=4)cout地址ip的段数不是,error!endl;return false; int j,t=0;for(j=0;j=strlen(ip);j+)if(ipj=.)t+;if(t!=3) 中国计量学院现代科技学院课程设计报告 p.17cout地址ip中的.不是,error!endl;retu
23、rn false; int i;for(i=0;i255)if(!noillegalchar(doti) /判断含有非法字符cout地址ip中含有非数字的非法字符,error!255) /判断数值溢出cout地址ip中含有不在-255间的数字,error!endl;return false; int flag=1;/首先设置为非法,即全for(i=0;iiplen;i+)if(atoi(doti)!=0)/含有非的字段flag=0; if(flag=1)cout地址ip全为全,error!endl;return false;中国计量学院现代科技学院课程设计报告 p.18flag=1;/首先设置
24、为非法,即全for(i=0;iiplen;i+)if(atoi(doti)!=255)flag=0;if(flag=1) cout地址ip全为全,error!0&atoi(dot0)127) /a类ip地址j1=1; /直接从开始coutip地址属于a类网endl;if(atoi(dot0)=127) /为的特殊号coutip地址ip网络号为!,error!=128&atoi(dot0)=191) /b类ip地址j1=2;coutip地址属于b类网=192&atoi(dot0)=223) /c类ip地址j1=3;coutip地址属于c类网223&atoi(dot0)255)cout请重新输入i
25、p地址ip,仅限于a,b和c类ip地址,error!endl;return false;if(atoi(dot0)=255) coutip地址ip网络号全为1,error!endl;return false;j2=j1; /j1用于判断全情况,j1用于判断全情况的起始下标int flag=1;/首先设置为非法,即主机号全 for(i=j1;iiplen;i+)if(atoi(doti)!=0) flag=0; flag=1;/首先设置为非法,即全 for(i=j2;iiplen;i+) if(atoi(doti)!=255) 中国计量学院现代科技学院课程设计报告 p.20flag=0; if(
26、flag=1) coutip地址ip的主机号全,error!endl; return false;return true;/判断子网号subnet是否合法bool iptest:subnetisvalid(char *subnet)if(!ipisvalid(subnet) /调用判断ip的函数ipisvalid()进行判断return false;return true;/判断ip是否为子网成员,并输出判断结果void iptest:print() char subnet_one15,ip_one15; int nbip4,nbsubnet4,i;strcpy(subnet_one,subn
27、et); /把subnet地址复制给subnet_onestrcpy(ip_one,ip); /把ipt地址复制给ip_one/split()函数把字符型的地址转换为四段int型的地址split(subnet_one,nbsubnet); /用subnet_one而非subnet是为了保护subnet地址中国计量学院现代科技学院课程设计报告 p.21不被破坏split(ip_one,nbip);for(i=0;i4;i+) nbipi=tobinary(nbipi);/将分离出来的十进制转换为二进制nbsubneti=tobinary(nbsubneti); char *cbip=new ch
28、ar33; char *cbsubnet=new char33; cbip=tostring(nbip);/将二进制数组转换为位的二进制字符指针 cbsubnet=tostring(nbsubnet); for(i=0;imask;i+) if(cbipi!=cbsubneti) coutendlip地址:ip不属于subnet这一子网endl; /system(pause); return; coutendlip地址:ip属于subnet这一子网endl; /system(pause);/十进制int型数据转换为二进制int型数据int iptest: tobinary(int a)/将十进制数转换为二进制数 if(a/2=0) return a%2; return a%2+tobinary(a/2)*10; /递归调用 中国
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国有机茶市场消费需求与竞争趋势预测报告
- 2024至2030年中国杞子粉数据监测研究报告
- 2024-2030年中国教学用模拟电梯项目可行性研究报告
- 2024-2030年中国快速软卷帘门融资商业计划书
- 2024-2030年中国彩妆行业市场消费调研分析及投资创新模式研究报告
- 2024-2030年中国建筑工程承包行业市场深度调研及竞争格局与投资研究报告
- 2024-2030年中国应急通信行业发展趋势及投资商业模式分析报告
- 2024-2030年中国工业级无人机行业发展前景规划分析报告权威版
- 2024-2030年中国封边胶市场营销动态与渠道策略研究报告
- 2024至2030年中国外塑内钢保温杯数据监测研究报告
- 妇产科护士晋升述职报告
- 骨髓腔内输液(IOI)技术
- 建筑幕墙工程(铝板、玻璃、石材)监理实施细则(全面版)
- 小学数学与思政融合课教学设计
- 江西省南昌市民德学校2023-2024学年八年级上学期期中数学试题
- 2023年度学校食堂每月食品安全调度会议纪要
- 建筑门窗、幕墙安装工人安全技术操作规程
- 绿色高效百万吨级乙烯成套技术开发及工业应用-研究报告
- 项目部单机油耗分析报告
- 企业和银行合作情况报告
- 小学奥数 等量代换(含答案)
评论
0/150
提交评论