分享
 
 
 

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

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

3,创建网络

方法名称: Net::ReCreate

方法参数: 无

返回值: 无

方法的目的: 重新创建网络(包含首次创建)。如果网络信息发生改变,则释放内存资源,重新获得网络信息,构建网络数据结构pNodeArray。同时此方法在获得网络信息的同时,填写一个重要的中间表:路由器标号与地址对映表。本方案实现的方式仍为简略方式,复杂网络则pNodeArray需构建为完成的邻接表。实现代码省略。

可能的出错: 文件操作失败:系统退出。

// 创建网络

void Net::ReCreate(void)

{

if(IsChanged())

{

AbsRout *pRout=NULL;

AbsLine *pLine=NULL;

std::fstream file;

std::fstream indexFile;

char *fileName="routaddress.txt";

char *indexFileName="IndexAddr.txt";

unsigned int addr[IP_ADDRESS_LENGTH];

//清空资源

Clear();

//获得网络结构信息

GetNetInfor();

pNodeArray = new NetNode[routNum];

//打开存储“路由器地址表”文件

file.open(fileName,std::ios_base::in|std::ios_base::out);

if(file.fail())

{

std::cout<<"\n\n文件("<<fileName<<") 打开失败.\n\n";

char ch;

std::cin>>ch;

exit(-1);

}

//打开存储“路由号与地址对应表”文件

indexFile.open(indexFileName,std::ios_base::in|std::ios_base::out);

if(indexFile.fail())

{

std::cout<<"\n\n文件("<<indexFileName<<") 打开失败.\n\n";

char ch;

std::cin>>ch;

exit(-1);

}

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

{//网络的初始化

indexFile<<i<<'\t';

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

{

file>>addr[j];

indexFile<<addr[j]<<' ';

}

indexFile<<'\n';

pRout = new CentralRout();

pRout->SetSelfAddress(addr);

(pNodeArray+i)->pRout = pRout;

pLine = new Fiber();

(pNodeArray+i)->pLine = pLine;

}//end of for

file.close();

indexFile.close();

}

/*注释内容为网络邻接表的实现方式,邻接表可以表示任意复杂的网络。

但这里从简省略,网络的信息仍依靠矩阵与向量保存。待系统需创建

任意复杂的网络的时候,可对代码进行修改和扩充。

(这一部分代码略…) */

}

三,路由计算与路由表的建立

这一部分为比较核心的内容。路由计算的建立,与路由计算的实现是分离的。路由计算的实现我们再另外的文档中再单独展示。当把路由计算与其实现完成整合以后,就可以由路由器完成路由表的填写。

1,设置路由计算方法

方法名称: AbsRout::SetComputeMethods

方法参数: void _routCompute(int **,int **,int **&,int,int)

返回值: 无

方法的目的: 把路由计算的实现(参数_ routCompute)与路由器内路由计算的指针完成连接。

可能的出错: 无

//设置路由计算方法

void AbsRout::SetComputeMethods(void _routCompute(int **,int **,int **&,int,int))

{

RoutCompute = _routCompute;

}

2, 路由计算的建立

方法名称: Net::RoutComputeBuilder

方法参数: 无

返回值: 无

方法的目的: 路由计算的完整建立过程。包括实现路由计算的设置、洪泛方式送网络信息到路由器、调用路由表填写方法。

可能的出错: 无

// 路由计算的建立

void Net::RoutComputeBuilder(void)

{

if(pNodeArray!=NULL)

{

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

{

(pNodeArray+i)->pRout->SetComputeMethods(ComputeMethods);

(pNodeArray+i)->pRout->SetNetInfor(netArray,valArray,routNum);

}//

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

(pNodeArray+i)->pRout->SetRoutTable();

}//

}

注释:函数ComputeMethods由dll文件实现,为路由算法的主题部分。

<未完>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有