计算ICMP头的校验和:

来源:互联网 发布:中俄列车劫案知乎 编辑:程序博客网 时间:2024/05/29 14:55

计算ICMP头的校验和:

USHORT checksum(USHORT* buff, int nSize){unsigned long cksum=0;//将数据以字为单位加到cksumwhile (nSize > 1){cksum += *buff++;nSize -= sizeof(USHORT);}//如果为奇数, 将最后一个字扩展到双字,再累加if (nSize){cksum += *(UCHAR*)buff;}//将cksum的高16位与低16位相加,取反后得到校验和cksum = (cksum>>16) + (cksum&&0xffff);cksum += (cksum>>16);return (USHORT)(~cksum);}


原创粉丝点击