计算机网络课程设计报告_中国地质大学_武汉.doc

计算机网络课程设计报告_中国地质大学_武汉.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络课程设计报告_中国地质大学_武汉

计算机网络课程设计报告 学院: 计算机学院 专业:计算机科学与技术 教师: 班级: 姓名: 学号: 源码在CSDN上有 目 录 题目一 ……………………………………………………… 02 题目二 ……………………………………………………… 07 题目三 ……………………………………………………… 17 总结 ……………………………………………………… 24 题目一:P105:3-07,为该数据添加CRC码,并验证他的正确性,改动CRC码最后一位,验证他的正确性。 题目介绍: 循环冗余检验(CRC)的原理是在发送端,先把数据划分为组,假定每组k个比特。现假定待传送的数据M。CRC运算就是在数据M后面添加供差错检测用的n位冗余码,然后构成一个帧发出去,一共发送(k + n)位。在接收端把接收到的数据以帧为单位进行CRC检验:把收到的的每一个帧都除以同样的除数(模2运算),然后检测余数,如果传输过程中没有差错,得到的余数肯定为0,如果出现误码,那么余数等于0的概率是非常小的。 算法说明: 求余数的算法采用逐位比较的方法,每次从被除数(CString类型的字符)的前段取出与除数相同的位数,进行逐位比较,如果相同结果则为0,不同结果则为1,然后得到一个比较后的结果。删除被除数前被取出的字段,把比较后的结果连接到被除数前。此时的被除数位数不变,前边至少有一位为0,然后利用循环控制,把被除数前端的0位删除。然后重复之前的步骤,直到被除数的位数小于除数的位数,此时的剩下的被除数就是余数。然后检测余数的位数,若位数比除数的位数减1还要小,则在余数前端补0,使余数的位数等于除数的位数减1。校验算法与求余数的算法类似,根据接收到的数据和预先商定的除数,进行计算,求出余数,若余数为0,则传输的数据无误,若余数不为0,则传输过程中产生了错误。算法流程图如下所示: 程序流程图: 运行截图: 计算冗余校验码: 改变接收序列 主要代码实现: 1. 计算冗余码函数如下: void CMy01Dlg::OnBtnCount() { // TODO: Add your control notification handler code here UpdateData(TRUE); CString num1 = m_num1;//被除数 CString num2 = m_num2;//除数 CString send = num1; CString rcv; CString r;//余数 CString temp = ""; CString pre; int l1,l2; //被除数,除数的长度 l1 = num1.GetLength();//获取被除数长度 l2 = num2.GetLength();//获取除数长度 //被除数后添加n-1个0 for (int i = 0;i < l2-1;i++) { num1 = num1 + "0"; } //按位与运算 while(1) { pre = num1.Left(l2); for (i = 0;i < l2;i++) { if (pre.Mid(i,1) == num2.Mid(i,1)) temp = temp + "0"; if (pre.Mid(i,1) != num2.Mid(i,1)) temp = temp + "1"; } num1.Delete(0,l2);//删除被除数前的数据 num1 = temp + num1;//将结果加在被除数前 //去除被除数前边的为0位 while(num1.Left(1) == "0") { num1.Delete(0,1); } l1 = num1.GetLength();//获取被除数长度 if(l1 <= l2-1) break; else temp = ""; } r = num1;//余数 //判断余数位数,等于除数位数减1 while(r.GetLength() != l2-1) { r = "0"+r; } m_r = r; send = send + r;//发送序列 rcv = send;//接收序列 m_send = send; m_rcv = rcv; //被除数和除数置为不可编辑

文档评论(0)

allap + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档