(nsend-nreceived)/nsend*100);
close(sockfd);
exit(1);
}
/*校驗和算法*/
unsigned short cal_chksum(unsigned short *addr,int len)
{ int nleft=len;
int sum=0;
unsigned short *w=addr;
unsigned short answer=0;
/*把ICMP報頭二進制數據以2字節為單位累加起來*/
while(nleft>1)
{ sum+=*w++;
nleft-=2;
}
/*若ICMP報頭為奇數個字節,會剩下最后一字節。把最后一個字節視為一個2字節數據的高字節,
這個2字節數據的低字節為0,繼續累加*/
if( nleft==1)
{ *(unsigned char *)(&answer)=*(unsigned char *)w;
sum+=answer;
}
sum=(sum>>16)+(sum&0xffff);
sum+=(sum>>16);
answer=~sum;
文章來源于領測軟件測試網 http://www.kjueaiud.com/