回 帖 发 新 帖 刷新版面

主题:关于一个程序想请教

我想做一个关于用C++模拟以太网的传送,接收和检测,但是怎么编写也没有成功,想请大家帮忙看看,修改一下,谢谢了

很急,再次谢谢了

以下是我这个程序:

这个程序只有检测部分,没有发送和接收。但不知道为什么不出结果。

#include <fstream.h>
#include <iostream.h>
#include <string.h>

void main(int argc,char*argv[])
{


if(argc!=3)
{cout<<endl<<"请按以下格式输入命令行:FrameParse input_file output_file"<<endl;
return;
}
fstream outfile;
outfile.open(argv[2],ios::in|ios::out|ios::binary|ios::trunc);
fstream infile;
infile.open(argv[1],ios::in|ios::binary|ios::nocreate);


if(!infile.is_open())
{
cout<<endl<<"无法打开输入文件"<<endl;
return;
}
bool bframe=true;
int nframes=0;
int nframenum=0;
int nframelen=0;
while(bframe)
{nframenum++;
cout<<endl<<"帧"<<nframenum<<"开始解析"<<endl;
nframes=infile.tellg();
for(int i=0;i<7;i++)
if(infile.get()!=0xaa)
{
cout<<"没有找到合法的帧"<<endl;
infile.close();
return;
}
if(infile.get()!=0xab)
{
cout<<"没找到合法的帧"<<endl;
infile.close();
return;
}
infile.seekg(nframes,ios::beg);
cout<<endl<<"前导码:";
for(i=0;i<7;i++)
cout<<hex<<infile.get()<<dec<<"";
cout<<endl<<"帧前定界符:";
cout<<hex<<infile.get();
cout<<endl<<"目的地址:";
for(i=0;i<6;i++)
{cout<<hex<<infile.get()<<dec;
if(i!=5)
cout<<"_";
}
cout<<endl<<"源地址:";
for(i=0;i<6;i++)
{cout<<hex<<infile.get()<<dec;
if(i!=5)
cout<<"_";
}
cout<<endl<<"长度字段:";
cout<<hex<<infile.get()<<"";
nframelen=infile.get();
cout<<hex<<nframelen;
char*data=new char[nframelen];
infile.read(data,nframelen);
outfile.write(data,nframelen);
cout<<endl<<"数据字段:";
for(i=0;i<nframelen;i++)
cout<<data[i];
delete data;
if(nframelen<100)
bframe=false;
if(nframelen<46)
for(i=0;i<46-nframelen;i++)
infile.get();
cout<<endl<<"帧校验字段:";
for(i=0;i<4;i++)
cout<<hex<<infile.get()<<dec<<" ";
cout<<endl;
}
cout<<endl<<"帧全部解析完成"<<endl;
outfile.close();
infile.close();
}



谢谢,请帮我看一下!!! 


回复列表 (共1个回复)

沙发

希望高手帮帮忙,谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册