|
|
- //计算UDP包的校验和
- BYTE Data[ChkLen];
- for(index = 0; index < 8; index++)
- {
- Data[index] = ((BYTE*)pPacket)[index + 12];
- }
- Data[8] = 0x00;
- Data[9] = 0x11;
- Data[10] = ((BYTE*)pPacket)[24];
- Data[11] = ((BYTE*)pPacket)[25];
- for(index = 0; index < UDP_PACKET_TOTALLEN; index++)
- {
- Data[index + UDP_Virtual_HdrLen] = ((BYTE*)pPacket)[index + IP_PACKET_HDRLEN];
- }
- Data[ChkLen - 1] = 0;
- Data[18] = 0x00;
- Data[19] = 0x00;
- int count = ChkLen/2;
- WORD UDPChk = 0;
- for(index = 0; index < count; index++)
- {
- UDPChk += ((~Data[2*index]) << 8) | ((~Data[(2*index) + 1]) & 0x00ff);
- }
- return UDPChk;
复制代码
哪位好心人给看看 为什么这样计算出来的UDP校验和就是比正确的小了点呢 |
|