云南大学软件学院计实验

云南大学软件学院计实验

ID:34734803

大小:106.63 KB

页数:4页

时间:2019-03-10

云南大学软件学院计实验_第1页
云南大学软件学院计实验_第2页
云南大学软件学院计实验_第3页
云南大学软件学院计实验_第4页
资源描述:

《云南大学软件学院计实验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、云南大学软件学院实验报告课程:计算机网络原理实验任课教师:姓名:学号:专业:成绩:实验九、链路层实验基于CRC编码的检错程序的实现实验报告一、实验目的1、通过实验,掌握CRC编码和解码的原理。2、掌握基于CRC编码的差错检测技术。二、实验指导现在计算机网络广泛采用的差错检测技术是基于CRC(cyclicredundancycheck)循环冗余检测编码,CRC也称为多项式编码(polynomialcode),CRC算法非常容易用硬件实现。CRC编码算法实现:1、选择生成多项式G,其最高次方为r,即r+1位的二进制位串2、计算D·2r,即在数据D后面补r个0,

2、构成d+r位的位串3、按模2除法求(D·2r/G)的余数R,即:4、从D·2r中模2减去R,得到新的数据T,即加了CRC的帧三、实验要求1、设置一个d位的数据D,r+1位的多项式G,生成CRC码,并把此CRC码作为数据帧进行传送。2、编写两个子程序,分别实现CRC编码和CRC解码,在主函数中对子程序进行调用。解码子程序应能根据解码情况判断出接收到的数据帧是否出错,并给出提示。3、要求分别以正确和错误的数据来检验此检错程序。4、将编写程序的源代码加必要注释和程序运行结果一起填入实验报告中。提示:1、编写程序时数据直接用二进制数,可能用到位操作符^(异或)和<

3、<(左移)。2、在设置错误的编码时,错误位数最好不要超过r+1位。实现代码:#include#include//定义全局变量intDR[32];//用于储存循环冗余编码CRC;intREC[32];//用于储存用户接收到的编码;intlength;//用于模2除法中余数的长度;intlengthDR;//发送数据的长度;intlengthREC;//接收方接受到数据的长度;intD[32];//用于接收用户要发送的数据;intR[3];//储存3位余数的数组;intG[4];//用于储存4位生成器;voidchar_b

4、inary(char*a,int*b)//将接收到的字符转换为数值;{for(inti=0;i

5、^g[i]==1){j=i;//找到异或结果不为0的起始位置;break;}elsej=4;//前4位恰好除尽,余数为0;}intm=j;//将j复制到m,做标记,以防其值改变;for(inti=0;i<4-j;i++){d[i]=d_cop[m]^g[m];//将异或后的结果放入原数组中;m++;}length=length-j;//数组的长度减少j;intn=4;for(inti=4-j;i=4)remainder(d,g);//递

6、归实现循环四位异或直至不足四位推出循环;//以下为实现返回3位余数;if(length==3)//3位余数{for(inti=0;i<3;i++)R[i]=d[i];}elseif(length==2)//2位余数{R[0]=0;R[1]=d[0];R[2]=d[1];}elseif(length==1)//1位余数{R[0]=R[1]=0;R[2]=d[0];}elseif(length==0)//0位余数R[0]=R[1]=R[2]=0;}voiddecoded(inta[],intb[])//解码,看接收到数据是否正确,返回相应状态{//其中a为待解

7、码的数组,b为生成器数组;remainder(a,b);if(R[0]==R[1]==R[2]==0)//3位余数为0,即除尽;printf("接收到的数据正确!");else//未除尽;printf("接收到的数据错误!");}intmain(){charDC[32];charGC[4];charRECC[32];intlength_bu;printf("请输入数据:");scanf("%s",DC);lengthDR=strlen(DC)+3;//获取发送数据的长度;char_binary(DC,D);printf("4位生成码:");

8、scanf("%s",GC);char_binary(GC,G);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。