C++盤算ICMP頭的校驗和實例。本站提示廣大學習愛好者:(C++盤算ICMP頭的校驗和實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C++盤算ICMP頭的校驗和實例正文
本文實例講述了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);
}
願望本文所述對年夜家的C++法式設計有所贊助。