欢迎来到天天文库
浏览记录
ID:32173978
大小:247.50 KB
页数:7页
时间:2019-02-01
《计算机通信网络课程实验报告循环冗余校验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机通信网络课程实验报告实验三:循环冗余校验班级:姓名:学号:1实验目的熟悉VC开发环境,学习VC编程的基本步骤。2.写一个C程序,将实现CRC编码。此计画包含了两侧。第一个函数将会产生校验从原始数据和发电机。第二的会检查是否校验和是正确的。2实验环境要求安装WindowXP、VisualC++6.0、MSDN3实验原理循环冗余校验(CRC)通常是用来编码错误检测。在CRC错误检查,传送设备的基础上计算出号码传送的数据。接收设备重复同一计算后传输。如果两个设备都得到同样的结果,故假定传播是无错误的。程序被称为冗余校验是因为每个传输
2、不仅包括数据,另外,冗余值进行错误检查。假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x)=x^14+x^12+x^9+x^8+x^7+x^5+1,其中g中第k位的值,对应g(x)中x^k的系数。将g(x)乘以x^m,既将g后加m个0,然后除以m阶多项式h(x),得到的(m-1)阶余项r(x)对应的二进制码r就是CRC编码。h(x)可以自由选择或者使用国际通行标准,一般按照h(x)的阶数m,将CRC算法称为CRC-m,比如CRC-32、CRC-64等。g(x)和h(
3、x)的除运算,可以通过g和h做xor(异或)运算。比如将11001与10101做xor运算: 明白了xor运算法则后,举一个例子使用CRC-8算法求101001110100001的效验码。CRC-8标准的h(x)=x^8+x^7+x^6+x^4+x^2+1,既h是9位的二进制串111010101。 经过迭代运算后,最终得到的r是10001100,这就是CRC效验码。4.实验要求1.编码在C(用VB或MFC或其他代码将被拒绝)。2.输入数据填补数据域、编码或支票CRC码在现场总线控制系统领域。3.所有的信息都需要输入“0”或
4、“1”。4.插座程序所需的传输。5设计流程图6调试及结果分析(1)实验分析:图中客户/服务器已建立连接,等待客户输入数据(2)分析:图中连接已建立,客户输入信息码(图中为10011101)和生成多项式(图中为1011),客户端自己计算出字节数(图中为11)(3)在服务器中输入生成多项式(图中为1011)如果服务器中的生成多项式与客户端的生成多项式一样,则系统提示为‘CRCissuccessful!’如果不一样则系统提示为‘CRCisnotsuccessful!’6系统调试出现及解决的问题本次实验的问题就是关于CRC的编程出现困难,只
5、能通过上网查找资料再经多次修改后才运行成功。7实验小结通过本次实验我进一步熟悉了VC开发环境和VC编程的基本步骤。熟悉了CRC编码。附录:stringcrc_function(stringm,stringp){stringr(m.begin(),m.begin()+p.size()),q;m=m+string(p.size()-1,'0');string::size_typei=p.size(),N=m.size(),j,i1=p.size();while(i<=N){q="";if(p[0]==r[0]){for(j=0;j6、;j++){q+=(r[j]-48)^(p[j]-48)+48;}r=q;}else{r.erase(0,1);r=r+m[i++];}}cout<
6、;j++){q+=(r[j]-48)^(p[j]-48)+48;}r=q;}else{r.erase(0,1);r=r+m[i++];}}cout<
此文档下载收益归作者所有