网络技术与通信课设报告sch4131155027

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

江苏大学京江学院JINGJIANGCOLLEGEOFJIANGSUUNIVERSITY网络技术与通信课程设计报告班级:J电信1301学号:4131155019姓名:张欢指导教师:孙俊2016年72题目1:计算校验和1.1课程设计要求根据介绍的算法,编制程序为给定数据计算校验和。(1)以命令形式运行:check_suminfile其中check_sum为程序名,infile为输入数据文件名。(2)输出:数据文件的校验和。1.2课程设计分析校验和的计算过程主要分为三个步骤:数据文件的传输,校验和的计算和校验结果的输出。其中,主要的是数据的输入和校验和的计算过程。输入数据可能是以字符的形式存储的,而校验和的计算则要采用数据形式,所以在从文件读取数据时,都要进行字符到数据的相互转换。1)将读入的ASCII码转化为相应的整型变量。2)在使用C++编程时直接使用16进制的方式打开输入文件。3)校验和的计算校验和算法是本程序的核心部分,应用最为普遍的是端循环进位法。3流程图:程序开始,初始化ch,count,sum,checksum从文件中读取一个字符chch=EOF?ch=’’ch转换为相应的8位数据,count++count偶数ch低4位送入ch高4位ch低4位送入ch低4位得到chr值(count/2)%2=1?chr和sum高8位相加chr和sum低8位相加得到chr值将32位sum折叠到16位求sum反码并输出结束YNNNYYN41.3运行结果截图及解释程序运行的结果如下:在D盘下建立的1.TXT文档的内容是:参考程序:#includestdio.h#includestdlib.hvoidmain(intargc,char*argv[])//指针数组作为主函数参数,用于函数带参数入{//定义并初始化变量FILE*fp;charch;unsignedcharchrl,chrh;unsignedintcount=0,checksum=0,chr=0;unsignedlongintsum=0;//打开文件argv[1]if((fp=fopen(d:\\jiaoyan.txt,r))==NULL){printf(\n\nFilecan'tbeopened);exit(1);}printf(\n\nthetypeofoutput:data---sum\n\n);//从txt文件读取字符,并进行数据处理while(1){if((ch=fgetc(fp))!=EOF){count++;if(ch!=''){5if(count%12==0)printf(\n);//将字符转换成相应的整形变量if(ch='0'&&ch='9')ch-='0';elseif(ch='a'&&ch='f')ch=ch-'a'+10;elseif(ch='A'&&ch='F')ch=ch-'A'+10;//计算8字节数的累加值,将奇数位累加到长整形sum的15~8位,偶数位累加到低8~0位//这样就避免了数据个数为奇偶的处理操作if(count%2==1)chrh=ch4;else{chrl=ch&0x0f;chr=chrh|chrl;if(count%4==2)sum+=chr8;elseif(count%4==0)sum+=chr;printf(%x--%lx,chr,sum);}}else{count--;}}else{break;}}//将sum由32位折合成16位if(sum16)checksum=(long(sum16)+long(sum&0x0000ffff));checksum=checksum&0x0000ffff;//结果输出printf(\n\nsum:%lx---checksum:%x,sum,checksum);printf(\n\nsource:argc=%d,\targv=%s\n,argc,argv[1]);fclose(fp);}题目2:IP地址的合法性及子网判断2.1课程设计要求本设计要求编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定子网。2.2课程设计分析1.程序大致流程1)分别判断子网号,掩码和IP地址的基本格式是否合法。2)如果三者的基本格式都合法,才调用判定“IP地址是否为子网成员”的函数。该函数同时判别子网号与掩码是否匹配,子网号为全0或全1,主机号为全0,全1.62.流程图:程序开始,变量初始化读取一个字符串总长不超过15?段数=4?每段的值是否介于0到255调用input函数输出“ip地址合法”ReturnInput(subnet)是否为真输出“子网非码”Subnet_Mask首段是否为255Ip&subnet_mask=subnet输出“掩码非法”子网号与掩码不匹配程序结束NYNNYYNYYYNN72.3运行结果(1)合法输入并匹配(2)合法输入不匹配(3)非法字符输入(4)数值溢出8(5)分隔符出错参考程序:#includeiostream#includectype.h#includemath.h#includestringusingnamespacestd;inta[4]={0,0,0,0};//分段存放子网charIp_addr[15];//ip地址charsub_net[15];//子网intip[4]={0,0,0,0};intsubnet[4]={0,0,0,0};//分段存放ip地址intaddress[4]={0,0,0,0};intnum;//子网掩码//判断IP是否合法voidaa(charc[15]){//判断IP地址不能超过15if(strlen(c)15){coutendlIP地址总长度不能超过15!endl;return;}intdotnum=0;9//判断IP地址中是否存在非法字符for(inti=0;istrlen(c);i++){if(isdigit(c[i])==0&&c[i]!='.'){coutendlIP地址中含有非法字符!endl;return;}if(c[i]=='.')dotnum++;}//判断IP地址中只能存在3个分隔符if(dotnum!=3){coutendlIP地址中分隔符只能为3个!endl;return;}//判断IP地址中是否存在连续分隔符for(i=0;istrlen(c)-1;i++){if(c[i]=='.'&&c[i+1]=='.'){coutendlIP地址中出现连续的分隔符!endl;return;}}}//分割IP地址voidbb(charc[15]){//判断IP地址中最后不能为分隔符for(intm=0;m4;m++){ip[m]=0;}intlen;len=strlen(c);if(c[len-1]=='.'){coutendlIP地址最后们不能为分隔符!endl;return;}chartemp[4][15];for(inti=0;i4;i++)for(intj=0;j15;j++)temp[i][j]='\0';intj=0;i=0;for(intk=0;kstrlen(c);k++){if(c[k]!='.'){temp[i][j]=c[k];j++;}else{i++;j=0;}}for(i=0;i4;i++){//判断每位的长度len=strlen(temp[i]);if(len3){coutendlIP地址每位长度不能超过3!endl;return;}switch(len){case3:{while(len!=0){ip[i]+=(temp[i][len-1]-48)*pow(10,3-len);len--;}break;}case2:{while(len!=0){ip[i]+=(temp[i][len-1]-48)*pow(10,2-len);len--;}break;}default:{while(len!=0){ip[i]+=(temp[i][len-1]-48)*pow(10,1-len);len--;10}}}}longintnum=0;for(i=0;i4;i++){//判断每位的大小不超过255if(ip[i]255){coutendlIP地址数字不能超过255!endl;return;}}}//分割网络地址voidee(charc[15]){//判断网络地址中最后不能为分隔符for(intm=0;m4;m++){subnet[m]=0;}intlen;len=strlen(c);if(c[len-1]=='.'){coutendl子网号最后们不能为分隔符!endl;return;}chartemp[4][15];for(inti=0;i4;i++)for(intj=0;j15;j++)temp[i][j]='\0';intj=0;i=0;for(intk=0;kstrlen(c);k++){if(c[k]!='.'){temp[i][j]=c[k];j++;}else{i++;j=0;}}for(i=0;i4;i++){//判断每位的长度len=strlen(temp[i]);if(len3){coutendl子网号每位长度不能超过3!endl;return;}switch(len){case3:{while(len!=0){subnet[i]+=(temp[i][len-1]-48)*pow(10,3-len);len--;}break;}case2:{while(len!=0){subnet[i]+=(temp[i][len-1]-48)*pow(10,2-len);len--;}break;}default:{while(len!=0){subnet[i]+=(temp[i][len-1]-48)*pow(10,1-len);len--;}}}}longintnum=0;for(i=0;i4;i++){//判断每位的大小不超过25511if(subnet[i]255){coutendl子网号数字长度不能超过255!endl;return;}}}//生成子网掩码voidcc(){cout子网掩码为:;intr[32];for(inti=0;inum;i++){r[i]=1;}for(intj=0;j32-num;j++){r[i++]=0;}intp=0;intw[8];intk=0;for(intm=0;m4;m++){intsum=0;for(intn=0;n8;n++){w[p]=r[k];sum=sum+w[p]*pow(2,7-n);p++;k++;}p=0;a[m]=sum;}for(intn=0;n4;n++){couta[n];if(n!=3){cout.;}}coutendl;}//判断是否和子网相等voiddd(){strings=;for(inti=0;i4;i++){if((a[i]&ip[i])==subnet[i]){s=s+a;}}//如果存在4个acout结果:;if(s==aaaa){cout属于同一子网!endl;}else{cout不属于同一子网!endl;}}voidmain(){cout************IP地址的合法性及子网的判断*************endl;cout设计成员张欢19endl;charjj='y';while(jj!='n'){cout请输入IP地址:;cinIp_addr;cout请输入连续1的个数:;cinnum;cout请输入子网号:;cinsub_net;coutIP地址为:;for(inti=0;i15;i++){coutIp_addr[i];}coutendl;cout子网号为

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功