2022年2022年计算机校验和程序 .pdf

上传人:Che****ry 文档编号:27247905 上传时间:2022-07-23 格式:PDF 页数:8 大小:188.33KB
返回 下载 相关 举报
2022年2022年计算机校验和程序 .pdf_第1页
第1页 / 共8页
2022年2022年计算机校验和程序 .pdf_第2页
第2页 / 共8页
点击查看更多>>
资源描述

《2022年2022年计算机校验和程序 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机校验和程序 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、广西师范大学计算机科学与信息工程学院实验 3 计算机校验和程序1实验目的(1)在给定数据报格式条件下构造数据报并计算数据报校验和;(2)掌握网络层校验和计算的原理与软件实现方法;(3)掌握计算网络校验和的增量式算法。实验环境(设备)平台: Windows XP;环境: Visual C+6.0 实验内容【实验方案设计】一 自定义格式如下:报文类型( 8 位)长度( 8 位)校验和( 16 位)数据字段。 。程序要求以命令行形式运行:Checksum inputfile outputfile 其中 Checksum是程序名, inputfile是输入文件名,该文件包含数据字段的内容, outpu

2、tfile是输出文件名,该文件保存封装完毕后的数据报。【实验过程】(实验步骤、记录、数据、分析)二 网际校验和算法:1把检验和字段置0,把所有需要校验的数据划分为16 位一组的比特序列,然后对每16 位的反码求和,结果取反,便得到校验和2为了验证校验和的正确性,对所有数据求反码和,如果结果全1,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院则表示校验结果正确三 计算校验和1算法思想是:将进位

3、累加的过程延迟到整个累加循环结束之后进行,从而提高计算速度2实现: 在 32 位的计算机上,把需要校验的数据按16 位一组进行累加,结果存放在32 位的累加器中,这样溢出位就保存在高16位上。全部累加结束后再把32 位累加器中高 16 位累加到低 16 位上,那么低 16 位值的反码即为最终校验和3延 迟 进 位 法 通 过 函 数checksum_calculating 来 实 现 。 函 数checksum_calculating的输入参数为 pBuffer 和 nSize, pBuffer 指向需要校验的数据缓冲区, nSize为需要的校验数据的大小,一字节为单位,返回值为16 位的校验

4、和。四 具体实现程序代码如下:#include #include #include / 用于使用网络顺序显示:htons #pragma comment(lib, WS2_32.LIB) /* * 计算给定数据的校验和* 输入参数:* pBuffer 指向需要校验的数据缓冲区名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院* nSize 需要校验的数据的大小,以字节为单位*返回值:* 16 位

5、的校验结果*/unsigned short checksum_calculating(unsigned short *pBuffer, int nSize) unsigned long dwCksum = 0; / 32 位累加和/ 以两字节为单位反复累加while(nSize 1) dwCksum += *pBuffer+; nSize -= sizeof(unsigned short); / 如果总字节数为奇数则加上最后一个字节if (nSize) dwCksum += *(unsigned char*) pBuffer; / 将 32 位累加和的高 16位与低 16 位第一次相加dwCk

6、sum = (dwCksum 16) + (dwCksum & 0 xffff); / 将上一步可能产生的高16 位进位再次与低 16 位累加名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院dwCksum += (dwCksum 16); / 返回 16 位校验和return (unsigned short) (dwCksum); void main(int argc, char * argv

7、) / 判断输入的命令行格式是否正确if (argc != 3) cout 请 按 以下 格 式 输入 命 令 行 : Checksum inputfile outputfile endl; return; / 创建输入文件流ifstream fInfile; / 创建输出文件流fstream fOutfile; / 以 2 进制方式打开指定的输入文件fInfile.open(argv1, ios:in|ios:binary); / 把文件指针移到文件末尾fInfile.seekg(0, ios:end); / 取得输入文件的长度unsigned short wLen = (unsigned

8、short)fInfile.tellg(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院/ 文件指针位置初始化fInfile.seekg(0, ios:beg); / 定义数据报缓冲区,缓冲区大小为4+wLen ,其中 4 为数据报类型字段、长度字段/ 以及校验和字段的长度和, wLen 为数据字段长度, 即输入文件长度(以字节为单位)unsigned char * pBuf = new

9、 unsigned char4 + wLen; pBuf0 = unsigned char(0 xab); / 给数据报类型字段赋值pBuf1 = unsigned char(wLen); / 给数据报长度字段赋值*(unsigned short *)(pBuf + 2) = 0;/ 计算校验和之前,校验和字段先置为 0 fInfile.read(pBuf+4, wLen); / 根据输入文件填充数据报的数据字段/ 计算校验和并把结果填入到数据报的校验和字段*(unsigned short *)(pBuf+2) = checksum_calculating(unsigned short *)p

10、Buf,4+wLen); / 屏幕输出校验和计算结果cout.width(4); cout 校验 和为 :0 x hex htons( *(unsigned short *)(pBuf+2) ) (以网络顺序显示 ) endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院/ 以 2 进制方式打开输出文件fOutfile.open(argv2,ios:in|ios:out|ios:bina

11、ry|ios:trunc); / 将 pBuf 中的数据报写入输出文件fOutfile.write(char *)pBuf, wLen+4); cout 数据报已成功保存在 argv2 文件中 ! endl; delete pBuf; / 释放数据报缓冲区fInfile.close(); / 关闭输入文件流fOutfile.close(); / 关闭输出文件流 五程序流程图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 广西师

12、范大学计算机科学与信息工程学院开始命令行参数是否正确创建输入输出文件流打开指定输入文件命令行输入格式提示N创建缓冲区参访数据报退出在缓冲区输入数据报类型长度和从输入文件读入的数据内容,校验和值0计算校验和将校验和写入数据报缓冲区打开输出文件见缓冲区中的数据报打开输出文件,将缓冲区中的数据报写入输出文件关闭输入输出文件释放缓冲区Y名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院六 运行结果:= 指导教师评语及成绩【评语】【成绩】指导教师签名:日期:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁