计算机校验和程序.doc

计算机校验和程序.doc

ID:56101630

大小:138.50 KB

页数:8页

时间:2020-03-16

计算机校验和程序.doc_第1页
计算机校验和程序.doc_第2页
计算机校验和程序.doc_第3页
计算机校验和程序.doc_第4页
计算机校验和程序.doc_第5页
资源描述:

《计算机校验和程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、文件名,该文件包含数据字段的内容,outputfile是输出文件名,该文件保存封装完毕后的数据报。【实验过程】(实验步骤、记录、数据、分析)二网际校验和算法:1把检验和字段置0,把所有需要校验的数据划分为16位一组的比特序列,然后对每16位的反码求和,结果取反,便得到校验和2广西师范大学计算机科学与信息工程学院为了验证校验和的正确性,对所有数据求反码和,如果结果全1,则表示校验结果正确三计算校验和1算法思想是:将进位累加的过程延迟到整个累加循环结束之后进行,从而提高计算速度2实现:在32位的计算机上,把需要校验的数

3、据按16位一组进行累加,结果存放在32位的累加器中,这样溢出位就保存在高16位上。全部累加结束后再把32位累加器中高16位累加到低16位上,那么低16位值的反码即为最终校验和3延迟进位法通过函数checksum_calculating来实现。函数checksum_calculating的输入参数为pBuffer和nSize,pBuffer指向需要校验的数据缓冲区,nSize为需要的校验数据的大小,一字节为单位,返回值为16位的校验和。四具体实现程序代码如下:#include#include<

4、fstream.h>#include//用于使用网络顺序显示:htons#pragmacomment(lib,"WS2_32.LIB")/***************************************************************************计算给定数据的校验和*输入参数:*pBuffer指向需要校验的数据缓冲区广西师范大学计算机科学与信息工程学院*nSize需要校验的数据的大小,以字节为单位*返回值:*16位的校验结果**************

5、************************************************************/unsignedshortchecksum_calculating(unsignedshort*pBuffer,intnSize){unsignedlongdwCksum=0;//32位累加和//以两字节为单位反复累加while(nSize>1){dwCksum+=*pBuffer++;nSize-=sizeof(unsignedshort);}//如果总字节数为奇数则加上最后一个字节if(nS

6、ize){dwCksum+=*(unsignedchar*)pBuffer;}//将32位累加和的高16位与低16位第一次相加dwCksum=(dwCksum>>16)+(dwCksum&0xffff);//将上一步可能产生的高16位进位再次与低16位累加广西师范大学计算机科学与信息工程学院dwCksum+=(dwCksum>>16);//返回16位校验和return(unsignedshort)(~dwCksum);}voidmain(intargc,char*argv[]){//判断输入的命令行格式是否正确if

7、(argc!=3){cout<<"请按以下格式输入命令行:Checksuminputfileoutputfile"<

8、ios::binary);//把文件指针移到文件末尾fInfile.seekg(0,ios::end);//取得输入文件的长度unsignedshortwLen=(unsignedsh

9、ort)fInfile.tellg();广西师范大学计算机科学与信息工程学院//文件指针位置初始化fInfile.seekg(0,ios::beg);//定义数据报缓冲区,缓冲区大小为4+wLen,其中4为数据报类型字段、长度字段//以及校验和字段的长度和,wLen为数据字段长度,即输入文件长度(以字节为单位)unsignedchar*pBuf=newuns

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

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

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