91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 87KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-04
  • 語言: 其他
  • 標簽:

資源簡介

校驗和算法描述:為保證網絡上傳輸的數據的可靠性,在許多協議中都設置了校驗和項,例如:IPv4、ICMPv4、IGMPV4、ICMPv6、UDP和TCP 等等。計算這些校驗和的算法稱為網際校驗和算法,簡單來說就是:把被校驗的數據16位進行累加,然后取反碼,若數據字節長度為奇數,則數據尾部補一個字節的0以湊成偶數。 由于從輸入文件讀入的數據不能直接滿足計算校驗和的條件,所以首先對從文件讀入緩沖區的數據進行預處理,即讀入緩沖區時忽略空格。由于累加是按16位進行的,所以每次從緩沖區中讀出4個字符,并將字符轉換成對應的16進制數字,如此依次累加,直至數據全部讀完。 還有一種情況,即如果數據長度為奇數個字節,則需要判斷,并補0累加。程序中利用的是緩沖區長度計數器i和當前讀取到計數器j判斷數據長度是否為奇數。即如果數據長度為偶數,則讀完數據時當前讀取到計數器j的值應與緩沖區長度i相等,而如果數據長度為奇數,則讀完數據時,當前讀取到計數器j>緩沖區長度i,此時需將緩沖區中剩余的兩個字符讀出,并補0,轉換成相應16進制數以后參與累加。 當累加結束后,將累加和的16位以上數據位移下再進行一次累加,并對最后累加和取反即得所求校驗和。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?

#define?MAX_BUFF?256

void?main(int?argcchar*?argv[])
{
FILE*?stream;
char?buff[MAX_BUFF]; //緩沖區數組?最大256個字符
long?sum=0; //累加器
char?nstring[5]; //待轉換成數字進行累加的字符串?(4個)
int?number=0; //待加數
unsigned?short?checksum; //校驗和
int?count;

// for(int?count=0;count// buff[count]=‘\0‘;
if(argc!=2)?
{
printf(“args?error!“);
return;
} //如果參數個數不對,則打印錯誤,返回

if((stream=fopen(argv[1]“r“))!=NULL) //打開對應文件,準備操作
{
while(!feof(stream)) //如果文件結束則累加操作結束
{
for(count=0;!feof(stream)&&(count { //緩沖區容量,且忽略空格,count最后存放讀出
char?a=fgetc(stream); //數據的個數
while(a==‘?‘)?a=fgetc(stream);
buff[count]=a;
}
if(feof(stream))?count--; //如果文件已經結束,則計數器count減一
for(int?j=0;j { //每次讀4個
for(int?k=0;k<4;k++)
nstring[k]=buff[j+k];
nstring[4]=‘\0‘;
sscanf(nstring“%x“&number);
sum+=number; //將轉換好的數據累加
}
if(j>count) //如果數據為奇數個,則補一個00
{
nstring[0]=buff[count-2];
nstring[1]=buff[count-1];
nstring[2]=‘0‘;
nstring[3]=‘0‘;
nstring[4]=‘\0‘;
sscanf(nstring“%x“&number);
sum+=number;
}
}
while(sum>>16) //高位累加
sum?=?(sum?&?0xffff)?+?(sum?>>?16);
checksum=~(unsigned?short)sum; //累加和取反得校驗和
printf(“%x\n“checksum);
}
fclose(stream);
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????1749??2004-10-22?12:39??校驗和算法\check_sum.cpp

?????文件??????20992??2004-10-22?12:48??校驗和算法\check_sum.doc

?????文件???????3437??2004-10-31?17:07??校驗和算法\check_sum.dsp

?????文件????????541??2004-10-31?17:07??校驗和算法\check_sum.dsw

?????文件?????172078??2004-10-21?22:46??校驗和算法\check_sum.exe

?????文件??????41984??2004-11-08?11:50??校驗和算法\check_sum.ncb

?????文件??????53760??2004-11-08?11:50??校驗和算法\check_sum.opt

?????文件???????1141??2004-10-31?17:07??校驗和算法\check_sum.plg

?????文件???????2163??2004-10-22?12:14??校驗和算法\framer.cpp

?????文件??????31232??2004-10-22?13:19??校驗和算法\framer.doc

?????文件???????3401??2004-10-31?17:07??校驗和算法\framer.dsp

?????文件????????535??2004-10-31?17:07??校驗和算法\framer.dsw

?????文件?????163886??2004-10-22?12:12??校驗和算法\framer.exe

?????文件??????52224??2005-01-12?15:39??校驗和算法\framer.ncb

?????文件??????53760??2004-11-08?11:50??校驗和算法\framer.opt

?????文件???????1117??2004-10-31?17:07??校驗和算法\framer.plg

?????文件?????????59??2004-10-12?15:32??校驗和算法\infile1.txt

?????文件????????404??2004-10-19?06:43??校驗和算法\infile2.txt

?????文件?????????20??2003-11-02?21:17??校驗和算法\input1

?????文件????????556??2003-11-02?21:17??校驗和算法\input2

?????文件?????????69??2004-10-31?17:06??校驗和算法\output1

?????文件????????579??2004-10-31?17:06??校驗和算法\output2

?????目錄??????????0??2005-10-11?19:51??校驗和算法

-----------?---------??----------?-----??----

???????????????605687????????????????????23


評論

共有 條評論

相關資源