校验和

来源:互联网 发布:烘焙入门必买清单 知乎 编辑:程序博客网 时间:2024/04/27 22:49
  1. #include<iostream>
  2. using namespace std;
  3. struct IP
  4. {
  5.        unsigned short check;
  6.        unsigned int data;
  7. }ip={0,5};
  8. unsigned short checksum(unsigned short *buf,int nword)
  9. {
  10. unsigned long sum;
  11. for(sum=0;nword>0;nword--)
  12.     sum += *buf++;
  13. sum = (sum>>16) + (sum&0xffff);
  14. sum += (sum>>16);
  15. return ~sum;
  16. }
  17. int main()
  18. {
  19.         // sender
  20.         ip.check = checksum((unsigned short*)&ip,1);
  21.         // send ip
  22.         
  23.         // recver
  24.         // recv ip
  25.         if( checksum((unsigned short*)&ip,1) == 0)
  26.         {
  27.             cout << "数据无损坏!";    
  28.         }
  29.         getchar();
  30.         getchar();