资源简介
解析已封装好的 模拟IEEE 802.3格式的Ethernet帧的封包文件(封包文件是二进制文件,文件名为input,文件中包含若干个Ethernet帧,其中有正确的帧,也有错误的帧),列出每个Ethernet帧的各个字段的值,并判断帧的正确性

代码片段和文件信息
#include
#include
#include
using namespace std;
struct frame
{
unsigned char qdm[7];
unsigned char djf;
unsigned char mddz[6];
unsigned char ydz[6];
unsigned char cd[2];
unsigned char data[1500];
unsigned char jym;
};
unsigned cdz[10];
frame fra[10];
int read_file()
{
ifstream infile(“input“ios::binary);
for(int j=0;j<10;j++)
{
infile.read((char*)fra[j].qdm7);
infile.read((char*)&fra[j].djf1);
infile.read((char*)&fra[j].mddz6);
infile.read((char*)&fra[j].ydz6);
infile.read((char*)&fra[j].cd2);
cdz[j]=fra[j].cd[1]+fra[j].cd[0]*256;
if(cdz[j]<46) cdz[j]=46;
else if(cdz[j]>1500)
{
cout<<“数据溢出“< system(“pause“);
exit(1);
}
infile.read((char*)&fra[j].datacdz[j]);
infile.read((char*)&fra[j].jym1);
if(infile.eof()) break;
}
return(j);
}
unsigned crc(int j)
{unsigned char file[2000];
unsigned length;
for(int i=0;i<6;i++)
file[i]=fra[j].mddz[i];
for(i=0;i<6;i++)
file[i+6]=fra[j].ydz[i];
for(i=0;i<2;i++)
file[i+12]=fra[j].cd[i];
for(i=0;i file[i+14]=fra[j].data[i];
length=cdz[j]+14;
unsigned crc=0;
unsigned g=0x07;
for (int m=0; m {
crc ^= file[m];
for(int n=0;n<8;n++)
{
if(crc & 0x80 )
crc=(crc<<1)^g;
else
crc=crc<<1;
}
}
crc&=0xff;
return crc;
}
void main()
{
int jn;
unsigned CRC;
n=read_file();
for(j=0;j {
cout<<“序号:“<
int i;
cout<<“前导码:“;
for(i=0;i<7;i++)
cout< cout<
cout<<“帧前定界符:“<
cout<<“目的地址:“;
for(i=0;i<6;i++)
{cout< if(i<5) cout<<“-“;}
cout<
cout<<“源地址:“;
for(i=0;i<6;i++)
{cout< if(i<5) cout<<“-“;}
cout<
cout<<“数据长度:“;
for(i=0;i<2;i++)
{cout< if(i<5) cout<<“ “;}
cout<
cout<<“数据字段:“< CRC=crc(j);
if(CRC==fra[j].jym)
{
cout<<“CRC校验(正确):“< cout<<“状态:“<<“Accept“< }
else
{
cout<<“CRC校验(错误):“< cout<<“状态:“<<“Discard“< }
cout< }
system(“pause“);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2303 2006-10-06 13:46 fr
文件 2755 2009-05-17 10:23 fr
目录 0 2009-05-17 10:18 fr
----------- --------- ---------- ----- ----
5058 3
- 上一篇:Clarke变换中系数(√)2/3的推导
- 下一篇:线路放样坐标计算器
评论
共有 条评论