分享
 
 
 

路由模拟——设计方案的实现(1)

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

路由模拟系统 设计方案(二)

实现部分

2004-4-10

说明:本实现部分只介绍主要类的主要接口的实现。

一,网络数据包的产生

网络数据包可以由路由器产生,这里由Net类产生,并传给相应路由器作为起点。因本系统的初衷,所以所有过程的界面都是控制台。如果以后的实现为窗体界面,可以重载或重写这一部分代码。

1,产生网络传输的数据包

方法名称: Net::MakeData

方法参数: 无

返回值: int类型,为数据包起点路由器号。

方法的目的: 由控制台输入正确的起始路由器号与目标路由器号,产生正确的数据包。其中路由器号和路由器地址是一一对映的。

可能的出错: 网络未建: 报错且系统退出。

控制台路由器号输入有误:报错且重新输入。

// 产生网络传输的数据包

int Net::MakeData(void)

{

if(routNum==0 || pNodeArray==NULL)

{

std::cout<<"\n网络为空网络,目前无法生成数据包...\n\n";

exit(-1);

}//

int i=0,j=0;

std::cout<<"\n网络中路由器的标号与地址为:\n"

<<"标号:\t地址"<<std::endl;

for(int k=0;k<routNum;k++)

{// 打印路由器号与地址对应表

std::cout<<k<<":\t";

for(int m=0;m<IP_ADDRESS_LENGTH;m++)

std::cout<<*((pNodeArray+k)->pRout->GetSelfAddress()+m);

std::cout<<std::endl;

}

Loop:

std::cout<<"\n请输入数据包的源路由器的标号:";

std::cin>>i;

std::cout<<"\n请输入数据包的目标路由器的标号:";

std::cin>>j;

if((i< 0)||(i>routNum-1)||(j<0)||(j>routNum-1))

{

std::cout<<"输入的源路由器的标号或目标路由器的标号有错误,请核对...\n\n";

goto Loop;

}

// 产生网络传输的数据包:IPData数据包

NetData ipData(false);

ipData.SetAddressFrom((pNodeArray+i)->pRout->GetSelfAddress());

ipData.SetAddressTo((pNodeArray+j)->pRout->GetSelfAddress());

ipData.SetNextHop((pNodeArray+i)->pRout->GetSelfAddress());

ipData.SetPreHop((pNodeArray+i)->pRout->GetSelfAddress());

// 送给起点路由器

(pNodeArray+i)->pRout->MakeData(ipData);

return i;

}

2, 路由器产生数据

方法名称: AbsRout::MakeData

方法参数: NetData & netData

返回值: 无

方法的目的: 把参数netData拷贝到路由器当前数据包,调用路由计算。

可能的出错: 无

// 产生数据

void AbsRout::MakeData(NetData & netData)

{

currIPData.SetAddressFrom(netData.GetAddressFrom());

currIPData.SetAddressTo(netData.GetAddressTo());

currIPData.SetIPData(netData.GetIPData());

currIPData.SetNextHop(netData.GetNextHop());

currIPData.SetPreHop(netData.GetPreHop());

currIPData.ID = netData.ID;

//---------------------------------------------

std::cout<<"\n产生的数据包:\n";

for(int i=0;i<IP_ADDRESS_LENGTH;i++)

std::cout<<*(netData.GetAddressFrom()+i);

std::cout<<" -> ";

for(int i=0;i<IP_ADDRESS_LENGTH;i++)

std::cout<<*(netData.GetAddressTo()+i);

std::cout<<"\n\nAt Rout:\t";

for(int i=0;i<IP_ADDRESS_LENGTH;i++)

std::cout<<selfAddress[i];

std::cout<<std::endl;

//-----------------------------------------------

if(AddrEqual(currIPData.GetAddressTo(),selfAddress))

return;

DataRoutCompute();

}

<未完>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有