网际校验和算法VC源码

时间:2013-09-25 19:25:34
【文件属性】:

文件名称:网际校验和算法VC源码

文件大小:87KB

文件格式:RAR

更新时间:2013-09-25 19:25:34

网际校验和

校验和算法描述:为保证网络上传输的数据的可靠性,在许多协议中都设置了校验和项,例如:IPv4、ICMPv4、IGMPV4、ICMPv6、UDP和TCP 等等。计算这些校验和的算法称为网际校验和算法,简单来说就是:把被校验的数据16位进行累加,然后取反码,若数据字节长度为奇数,则数据尾部补一个字节的0以凑成偶数。 由于从输入文件读入的数据不能直接满足计算校验和的条件,所以首先对从文件读入缓冲区的数据进行预处理,即读入缓冲区时忽略空格。由于累加是按16位进行的,所以每次从缓冲区中读出4个字符,并将字符转换成对应的16进制数字,如此依次累加,直至数据全部读完。 还有一种情况,即如果数据长度为奇数个字节,则需要判断,并补0累加。程序中利用的是缓冲区长度计数器i和当前读取到计数器j判断数据长度是否为奇数。即如果数据长度为偶数,则读完数据时当前读取到计数器j的值应与缓冲区长度i相等,而如果数据长度为奇数,则读完数据时,当前读取到计数器j>缓冲区长度i,此时需将缓冲区中剩余的两个字符读出,并补0,转换成相应16进制数以后参与累加。 当累加结束后,将累加和的16位以上数据位移下再进行一次累加,并对最后累加和取反即得所求校验和。


【文件预览】:
校验和算法
----framer.doc(31KB)
----framer.plg(1KB)
----framer.cpp(2KB)
----input1(20B)
----infile2.txt(404B)
----framer.exe(160KB)
----framer.opt(53KB)
----input2(556B)
----infile1.txt(59B)
----framer.ncb(51KB)
----check_sum.exe(168KB)
----check_sum.doc(21KB)
----check_sum.cpp(2KB)
----check_sum.plg(1KB)
----output2(579B)
----framer.dsp(3KB)
----check_sum.dsw(541B)
----check_sum.ncb(41KB)
----check_sum.opt(53KB)
----output1(69B)
----check_sum.dsp(3KB)
----framer.dsw(535B)

网友评论

  • 算法很好,可以很好理解校验原理!
  • 谢谢了,还是很有参考价值的,对理解CRC算法有帮助
  • 代码还行吧,我对VC不太熟悉。