版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课程设计报告题目 IP地址的合法性及子网判断 成绩 学院名称 信息学院 专业班级几ke122 学生姓名 张仁琨 学 号 200903011013 指导教师 张维玉 二一二 年 6月 28 日I目 录1.课程设计的目的与任务12.课程设计的内容12.1课题分析与设计12.2.课题实现23.设计总结74.附录85.参考文献13山东轻工业学院 信息学院 11-12学年第2学期 2009级计算机网络课程设计1. 课程设计的目的与任务计算机网络课程设计是计算机科学与技术专业实践环节之一,是学习完计算机网络课程后进行的综合练习。其目的和任务是:通过运用各种编程工具和语言进行各种原理、协议、算法以
2、及网络相关软件的编程,使学生理解并掌握计算机网络体系结构、协议和通信原理及工作过程;通过运用网站制作工具进行网站规划设计;对大中型网络系统进行分析设计,提出建网解决方案等实践锻炼培养学生掌握知识、解和分析应用需求、综合利用现有技术解决问题的能力和实践能力。2. 课程设计的内容2.1. 课题分析与设计1. 选题方向及内容简介 编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。程序设计要求:(1)命令行格式:ip_test subnet/mask ip_addr。(ip_test为程序名;subnet为子网号;mask子网掩码连续1的个数;ip_addr是要测试的IP地址)(2
3、)判断子网号subnet,IP地址ip_addr以及子网掩码mask的合法性。(3)在IP地址合法的前提下,判断IP地址ip_addr是否属于子网subnet。(4)输出命令行中的subnet,子网掩码,ip_addr的是否合法以及ip_addr是否属于子网subnet。 2. 课题分析与设计 (1)分析子网和IP地址的合法性子网号和IP地址格式:X.X.X.X,其中X必须是0255,中间用点隔开,由四段组成。全0和全1以及以0和127不可用,因此X不能全部为0和255,且第一个X不能为0和127。先分离子网(subnet/mask),以“/”作为分界分离出子网号和子网掩码,然后使用字符串存储
4、子网号和IP地址。初次判断X包含的字符是否是09的字符,其个数是否处于13之间,X的个数是否为4,点的个数是否为3,X与点是否交替出现,且X比点先出现。然后将X转换成十进制数,再判断第一个X是否为127,所有X是否全部为0和255。最后判断子网掩码是否为131之间,如果合法,再将其转换成点分十进制形式。(2)分析子网与IP地址的关系将子网号,IP地址分别和子网掩码相与,如果相与的结果相同,则IP地址属于子网,否则IP地址不属于子网。(3)程序流程3. 设计使用的技术介绍(1)程序开发环境:Visual Studio2010集成开发环境(2)程序使用语言:C语言2.2. 课题实现1. 实现过程描
5、述或者具体步骤(1) 分别判断子网号、掩码和IP地址的基本格式是否合法。(2) 如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。该函数的同时子网号与掩码是否匹配,子网号为0或全1,主机号为全0、全1。2. 各模块具体实现分离出子网号与子网掩码void separate(char *str,char s22)int i=0,j=0,k;for(k=0;strk!='/'&&strk;k+)/分离出子网号sij=strk;j+;sij='0'i+;j=0;if(strk)/分离出子网掩码for(k+;strk;k+)sij=st
6、rk;j+;sij='0'elsesij='0'/第一次判断子网号与IP地址的合法性int CheckNet(char *str)int i,counter=0,total=0;for(i=0;stri!='0'i+)if(!i&&!isdigit(stri)/第一个必须是数字字符return 0;if(stri='.')/用分隔符来划分每段地址if(!counter|counter>3)total+;/计算所有分隔符的个数counter=0;continue;if(!isdigit(stri)/地址必须是数
7、字字符return 0; counter+;/计算连续字符的个数if(total!=3)return 0;else if(!counter)return 0;return 1;/每段地址为数字字符且都不超过3位/分离出合法地址的段地址void divide(char *str,char s4)int i,j=0,k=0;for(i=0;stri!='0'i+)/分离后存放在字符串数组中if(stri='.')sjk='0'k=0;/字符串的起始下标j+;/字符串数组的下标continue;sjk=stri;k+;sjk='0'/字
8、符变量转换成整型变量int ToInteger(char *str)int i,j,temp=0;for(i=0;stri!='0'i+)for(j=0;j<10;j+)if(stri=charsj)break;/找到后退出循环temp=10*temp+digitj;return temp;/第二次判断子网号与IP地址的合法性int checkout(char *str,int mark)int i,temp4;char s44;divide(str,s);for(i=0;i<4;i+)tempi=ToInteger(si);if(!temp0|temp0=127)
9、return 0;if(tempi<0|tempi>255)return 0;if(mark)addressi=tempi;elsenetworki=tempi;/不能出现全为0与全为1的情况if(!temp0&&!temp1&&!temp2&&!temp3)return 0;if(temp0=255&&temp1=255&&temp2=255&&temp3=255)return 0;return 1;/判断子网掩码的合法性int CheckMask(char *str)int i,co
10、unter=0;for(i=0;stri!='0'i+)if(!isdigit(stri)return 0;counter+;if(!counter|counter>2)return 0;return 1;/二进制的字符串转换成十进制数void ToMask(char *s,int *a)int i,j,k,t,temp;for(i=4;i>0;i-)/划分成4个块t=0;temp=0;for(j=8*i-1;j>=8*(i-1);j-)/每块的8位二进数转换成十进制数for(k=0;k<10;k+)if(sj=charsk)break;temp=tem
11、p+digitk*(int)pow(2,t);t+;ai-1=temp;3. 系统测试3设计总结这次课程设计,我收获了很多东西。通过上网和到图书馆查阅资料,我更加深入的学习了C语言,并利用所学知识设计,充分锻炼,增强了我的程序设计能力,使我加深了对理论知识的理解和掌握。充分体会到了理论固然重要,如果没有实践去验证,那也只是停在理论层面上,它的现实意义将无法得到体现。所以,这次课程设计是理论与实践的结合,增强了我在这方面的能力。 通过这次课程设计,我更加深刻的理解了IP地址的合法性,IP地址与子网的从属关系,子网与子网掩码的关系。在判断IP地址是否属于一个子网时,我对IP地址的分类以及子网划分有
12、了更加深刻的理解。在这次课程设计的过程中,我遇到了很多问题,但经过老师和同学的帮助,我解决了这些问题,并学到了很多知识,在此,对老师和同学表示真挚的感谢。4. 附录程序源代码如下:#include<stdio.h>#include<ctype.h>#include<string.h>#include<math.h>char chars="0123456789"int digit=0,1,2,3,4,5,6,7,8,9;int network4,address4;/分离出子网号与子网掩码void separate(char *s
13、tr,char s22)int i=0,j=0,k;for(k=0;strk!='/'&&strk;k+)/分离出子网号sij=strk;j+;sij='0'i+;j=0;if(strk)/分离出子网掩码for(k+;strk;k+)sij=strk;j+;sij='0'elsesij='0'/第一次判断子网号与IP地址合法性int CheckNet(char *str)int i,counter=0,total=0;for(i=0;stri!='0'i+)if(!i&&!isdig
14、it(stri)/第一个必须是数字符return 0;if(stri='.')/用分隔符来划分每段地址if(!counter|counter>3)return 0;total+;/计算所有分隔符的个数counter=0;continue;if(!isdigit(stri)/地址必须是数字符return 0;counter+;/计算连续字符的个数if(total!=3)return 0;else if(!counter)return 0;return 1;/ 每段地址为数字符且都不超过3位?/分离出合法地址的段地址void divide(char *str,char s4)
15、int i,j=0,k=0;for(i=0;stri!='0'i+)/分离后存放在字符串数组中if(stri='.')sjk='0'k=0;/字符串的起始下标j+;/字符串数组的下标continue;sjk=stri;k+;sjk='0'/字符变量转换成整型变量int ToInteger(char *str)int i,j,temp=0;for(i=0;stri!='0'i+)for(j=0;j<10;j+)if(stri=charsj)break;/找到后退出循环temp=10*temp+digitj;re
16、turn temp;/第二次判断子网号与IP地址的合法性int checkout(char *str,int mark)int i,temp4;char s44;divide(str,s);for(i=0;i<4;i+)tempi=ToInteger(si);if(!temp0|temp0=127)return 0;if(tempi<0|tempi>255)return 0;if(mark)addressi=tempi;elsenetworki=tempi;/不能出现全为0与全为1的情况if(!temp0&&!temp1&&!temp2&
17、;&!temp3)return 0;if(temp0=255&&temp1=255&&temp2=255&&temp3=255)return 0;return 1;/判断子网掩码的合法性int CheckMask(char *str)int i,counter=0;for(i=0;stri!='0'i+)if(!isdigit(stri)return 0;counter+;if(!counter|counter>2)return 0;return 1;/二进制字符串转换成十进制数void ToMask(char *s
18、,int *a)int i,j,k,t,temp;for(i=4;i>0;i-)/划分成4个块t=0;temp=0;for(j=8*i-1;j>=8*(i-1);j-)/每块的8位二进制数转换成十进制数for(k=0;k<10;k+)if(sj=charsk)break;temp=temp+digitk*(int)pow(2.0,t);t+;ai-1=temp;void main(int argc,char *argv)if(argc!=3)printf("请按命令行格式输入ip_text subnet/mask ip_addrn");return;cha
19、r subnet22,ip_addr22,mask32,s222;int i,Mask,M4,mark3=1,1,1;printf("n=IP地址合法性及子网判断=n");strcpy(subnet,argv1);separate(subnet,s);/判断子网号的合法性if(!CheckNet(s0)mark0=0;printf("子网号(subnet):%s不合法n",s0);elsemark0=checkout(s0,0);if(mark0)printf("子网号(subnet):%s合法n",s0);elseprintf(&q
20、uot;子网号(subnet):%s不合法n",s0);/判断子网掩码的合法性if(!CheckMask(s1)mark1=0;printf("子网掩码(mask):%s不合法n",s1);elseMask=ToInteger(s1);if(Mask<=0|Mask>=32)mark1=0;printf("子网掩码(mask):%d不合法n",Mask);elsefor(i=0;i<32;i+)/子网掩码转换成二进制if(i<Mask)maski='1'elsemaski='0'ToMask(mask,M);/子网掩码转换成十进制printf("子网掩码(mask):%d.%d.%d.%d合法n",M0,M1,M2,M3);strcpy(ip_addr,argv2);/判断IP地址的合法性if(!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管道施工现场奖惩制度
- 书法课的奖罚制度
- 物流企业安全奖惩制度
- 警务人员激励奖惩制度
- 医院新农合工作奖惩制度
- 医生门诊奖惩制度范本大全
- 品牌督导奖惩制度汇编
- 关于物业员工奖惩制度
- 技术研发中心奖惩制度
- 物业岗位考核奖惩制度
- 2026年吉安幼儿师范高等专科学校单招职业适应性考试题库附答案详解(夺分金卷)
- XX中学2026年春季学期“开学第一课”主题班会活动方案
- 产品研发流程规范与指导(标准版)
- 华为班组长培训课件
- 2026公务员时事政治热点考试题目及答案
- 聚氨酯地坪施工方案及工艺要求
- 常压储罐完整性管理系统:构建、应用与展望
- 劳务合同2026年合同协议
- 2025年高职(金融科技应用)金融科技基础专项测试试题及答案
- 理疗店应急预案(3篇)
- 2026年新疆生产建设兵团兴新职业技术学院单招职业技能测试题库及答案详解一套
评论
0/150
提交评论