C++计算ICMP头的校验和实例
时间:2022-06-03 11:09:03|栏目:C代码|点击: 次
本文实例讲述了C++计算ICMP头的校验和的方法,分享给大家供大家参考。具体实现代码如下:
复制代码 代码如下:
USHORT checksum(USHORT* buff, int nSize)
{
unsigned long cksum=0;
//将数据以字为单位加到cksum
while (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);
}
{
unsigned long cksum=0;
//将数据以字为单位加到cksum
while (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);
}
希望本文所述对大家的C++程序设计有所帮助。
上一篇:C++超详细分析函数重载的使用
栏 目:C代码
下一篇:C语言 推理证明带环链表详细过程
本文标题:C++计算ICMP头的校验和实例
本文地址:http://www.codeinn.net/misctech/203612.html