计算机网络课程设计报告 联系客服

发布时间 : 星期一 文章计算机网络课程设计报告更新完毕开始阅读9c36a50203d8ce2f006623ba

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