当前位置:首页 > 计算机网络课程设计报告
break; } }
if (isEnd == true) {
pf[i] = frame; //save a frame into frame array. //frameCount = i; frameCount++;
m_framecount = i +1; cout < cout << \ cout << \ cout << \ cout << \ cout << \ cout << \ cout<< endl; fclose(r_File1); break; } pf[i] = frame;//sava current frame to frame buffer. //display some informaiton of frame buffer. frameCount++; m_framecount = i +1; cout < cout << \ cout << \ cout << \ cout << \ cout << \ //cout << \ cout<< endl; currentP = ftell(r_File1);//to record the current position of a file pointer } fflush(r_File1);//refresh } //print out some information. cout < cout <<\ cout < cout << \ cout < int nextNoRecord = 0; cout<<\ //open a file for write if((w_File2 = fopen(dp, \ { cout<<\ for (int m = 0; m < m_framecount ; m++) { for (int n = 0; n < dataSize -1; n++) {//check whether is last character. if(pf[m].data[n] == EOF) { ack.nextSeq = THANKS; //fputc(pf[m].data[n],w_File2); recvedChar++; break; } //write the character from current frame 's which in t index of data flied. fputc(pf[m].data[n],w_File2); recvedChar++; } cout << \ fflush(w_File2);//refresh if(ack.nextSeq == THANKS) { fclose(w_File2); break; } nextNoRecord = pf[m].sequenceNo; } cout < cout <<\ cout < cout << \ cout < if (ack.nextSeq != THANKS) { cout<<\ if (nextNoRecord ==7) { ack.nextSeq = 0 ; } else { ack.nextSeq = nextNoRecord +1; } cout << \ } else { cout<<\ cout << \ //delete the frame buffer array . delete []pf; } } else {cout << \ cout < /* can be used to check how many bytes in the specified file numRead = 0; fseek(r_File1,0,SEEK_END); numRead = ftell(r_File1); cout << \ } 2、 CRC #include // 注意:因最高位一定为“1”,故略去 const unsigned short nCRC_16 = 0x8005; // CRC-16 = X16 + X15 + X2 + X0 const unsigned short nCRC_CCITT = 0x1021; // CRC-CCITT = X16 + X12 + X5 + X0,据说这个 16 位 CRC 多项式比上一个要好 const unsigned long nCRC_32 = 0x04C11DB7; // CRC-32 = X32 + X26 + X23 + X22 + X16 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X1 + X0 unsigned long Table_CRC[256]; // CRC 表 // 构造 16 位 CRC 表 void BuildTable16( unsigned short aPoly ) { unsigned short i, j; unsigned short nData; unsigned short nAccum; for ( i = 0; i < 256; i++ ) { nData = ( unsigned short )( i << 8 ); nAccum = 0; for ( j = 0; j < 8; j++ ) { if ( ( nData ^ nAccum ) & 0x8000 ) nAccum = ( nAccum << 1 ) ^ aPoly; else nAccum <<= 1; nData <<= 1; } Table_CRC[i] = ( unsigned long )nAccum; } } // 计算 16 位 CRC 值,CRC-16 或 CRC-CCITT unsigned short CRC_16( unsigned char * aData, unsigned long aSize ) { unsigned long i; unsigned short nAccum = 0; for ( i = 0; i < aSize; i++ ) nAccum = ( nAccum << 8 ) ^ ( unsigned short )Table_CRC[( nAccum >> 8 ) ^ *aData++]; return nAccum; } // 构造 32 位 CRC 表 void BuildTable32( unsigned long aPoly ) { unsigned long i, j; unsigned long nData; unsigned long nAccum; for ( i = 0; i < 256; i++ ) { nData = ( unsigned long )( i << 24 ); nAccum = 0; for ( j = 0; j < 8; j++ ) { if ( ( nData ^ nAccum ) & 0x80000000 ) nAccum = ( nAccum << 1 ) ^ aPoly; else
共分享92篇相关文档