查看: 3834|回复: 2

如何计算UDP校验和。

[复制链接]
发表于 2010-11-4 15:40:07 | 显示全部楼层 |阅读模式
  1. //计算UDP包的校验和
  2. BYTE Data[ChkLen];
  3. for(index = 0; index < 8; index++)
  4. {
  5. Data[index] = ((BYTE*)pPacket)[index + 12];
  6. }
  7. Data[8] = 0x00;
  8. Data[9] = 0x11;
  9. Data[10] = ((BYTE*)pPacket)[24];
  10. Data[11] = ((BYTE*)pPacket)[25];

  11. for(index = 0; index < UDP_PACKET_TOTALLEN; index++)
  12. {
  13. Data[index + UDP_Virtual_HdrLen] = ((BYTE*)pPacket)[index + IP_PACKET_HDRLEN];
  14. }

  15. Data[ChkLen - 1] = 0;
  16. Data[18] = 0x00;
  17. Data[19] = 0x00;
  18. int count = ChkLen/2;
  19. WORD UDPChk = 0;
  20. for(index = 0; index < count; index++)
  21. {
  22. UDPChk += ((~Data[2*index]) << 8) | ((~Data[(2*index) + 1]) & 0x00ff);
  23. }
  24. return UDPChk;
复制代码


哪位好心人给看看      为什么这样计算出来的UDP校验和就是比正确的小了点呢
回复

使用道具 举报

 楼主| 发表于 2010-11-4 16:04:25 | 显示全部楼层
C:\Users\Administrator\Desktop\未命名.jpg
哪位能帮我看下   这个UDP包的校验和是如何计算的?
回复

使用道具 举报

发表于 2010-11-8 21:58:36 | 显示全部楼层
看不懂.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表