欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:27247905       资源大小:188.33KB        全文页数:8页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    广西师范大学计算机科学与信息工程学院实验 3 计算机校验和程序1实验目的(1)在给定数据报格式条件下构造数据报并计算数据报校验和;(2)掌握网络层校验和计算的原理与软件实现方法;(3)掌握计算网络校验和的增量式算法。实验环境(设备)平台: Windows XP;环境: Visual C+6.0 实验内容【实验方案设计】一 自定义格式如下:报文类型( 8 位)长度( 8 位)校验和( 16 位)数据字段。 。程序要求以命令行形式运行:Checksum inputfile outputfile 其中 Checksum是程序名, inputfile是输入文件名,该文件包含数据字段的内容, outputfile是输出文件名,该文件保存封装完毕后的数据报。【实验过程】(实验步骤、记录、数据、分析)二 网际校验和算法:1把检验和字段置0,把所有需要校验的数据划分为16 位一组的比特序列,然后对每16 位的反码求和,结果取反,便得到校验和2为了验证校验和的正确性,对所有数据求反码和,如果结果全1,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院则表示校验结果正确三 计算校验和1算法思想是:将进位累加的过程延迟到整个累加循环结束之后进行,从而提高计算速度2实现: 在 32 位的计算机上,把需要校验的数据按16 位一组进行累加,结果存放在32 位的累加器中,这样溢出位就保存在高16位上。全部累加结束后再把32 位累加器中高 16 位累加到低 16 位上,那么低 16 位值的反码即为最终校验和3延 迟 进 位 法 通 过 函 数checksum_calculating 来 实 现 。 函 数checksum_calculating的输入参数为 pBuffer 和 nSize, pBuffer 指向需要校验的数据缓冲区, nSize为需要的校验数据的大小,一字节为单位,返回值为16 位的校验和。四 具体实现程序代码如下:#include #include #include / 用于使用网络顺序显示:htons #pragma comment(lib, WS2_32.LIB) /* * 计算给定数据的校验和* 输入参数:* pBuffer 指向需要校验的数据缓冲区名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院* nSize 需要校验的数据的大小,以字节为单位*返回值:* 16 位的校验结果*/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 位第一次相加dwCksum = (dwCksum 16) + (dwCksum & 0 xffff); / 将上一步可能产生的高16 位进位再次与低 16 位累加名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院dwCksum += (dwCksum 16); / 返回 16 位校验和return (unsigned short) (dwCksum); void main(int argc, char * argv) / 判断输入的命令行格式是否正确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 short)fInfile.tellg(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院/ 文件指针位置初始化fInfile.seekg(0, ios:beg); / 定义数据报缓冲区,缓冲区大小为4+wLen ,其中 4 为数据报类型字段、长度字段/ 以及校验和字段的长度和, wLen 为数据字段长度, 即输入文件长度(以字节为单位)unsigned char * pBuf = new 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 *)pBuf,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:binary|ios:trunc); / 将 pBuf 中的数据报写入输出文件fOutfile.write(char *)pBuf, wLen+4); cout 数据报已成功保存在 argv2 文件中 ! endl; delete pBuf; / 释放数据报缓冲区fInfile.close(); / 关闭输入文件流fOutfile.close(); / 关闭输出文件流 五程序流程图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院开始命令行参数是否正确创建输入输出文件流打开指定输入文件命令行输入格式提示N创建缓冲区参访数据报退出在缓冲区输入数据报类型长度和从输入文件读入的数据内容,校验和值0计算校验和将校验和写入数据报缓冲区打开输出文件见缓冲区中的数据报打开输出文件,将缓冲区中的数据报写入输出文件关闭输入输出文件释放缓冲区Y名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 广西师范大学计算机科学与信息工程学院六 运行结果:= 指导教师评语及成绩【评语】【成绩】指导教师签名:日期:年月日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

    注意事项

    本文(2022年2022年计算机校验和程序 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开