路由模拟——设计方案的实现(6)
2004-05-01 21:25
519 查看
五,路由过程
本实现部分为整个系统执行时序的表现,如果与通信模拟系统整合,本部分是不需要的。所以这部分是为单独调试而写的。为了检验路由模拟系统,写了一个单数据包路由的过程。但语义基本上是完整的。如果在通信模拟系统里实现这一部分,可以同步详尽的扩充设计。
1,单数据包路由
方法名称: Communication::SingleDataRout
方法参数: 无
返回值: 无
方法的目的: 实现单个数据包由创建到路由成功的全过程,期间可能会有若干次的网络重建。
可能的出错: 无
// 单数据包路由
void Communication::SingleDataRout(void)
{
//局部变量
int index=0,number=0;
char ch;
bool bWriteSucc=true;
NetData *pNetData=NULL;
Loop:
//发送若干数据包后,自动检测网络是否已经发生改变;如果已经改变,
//则重新获得网络信息并创建之。
if(number==0)
net.ReCreate();
net.RoutComputeBuilder();
//index记录数据包的源路由器标号
index=net.MakeData();
pNetData=(pNodeArray+index)->pRout->NetReadData();
while(pNetData!=NULL)
{//该数据包进行路由过程
if(pNetData->IsMessage())
{//应答消息
index = net.GetRoutID(pNetData->GetNextHop());
bWriteSucc=(pNodeArray+index)->pRout->NetWriteData(*pNetData);
//涌塞则等待;完善的涌塞处理方案另外实现。
if(!bWriteSucc)
continue;
index = net.GetRoutID(pNetData->GetPreHop());
}else if(!pNetData->IsMessage())
{//网络数据包
index = net.GetRoutID(pNetData->GetNextHop());
bWriteSucc=(pNodeArray+index)->pRout->NetWriteData(*pNetData);
//涌塞则等待;完善的涌塞处理方案另外实现。
if(!bWriteSucc)
continue;
}//end of else if
pNetData=(pNodeArray+index)->pRout->NetReadData();
}//end of while
number = (number+1)%6;
std::cout<<"/n/nInput 'e' to exit,or press any char key to continue:";
std::cin>>ch;
std::cout<<std::endl;
if(ch!='e')
goto Loop;
}
<2004-4-11 完成>
相关文章推荐
- 路由模拟——设计方案的实现(1)
- 路由模拟——设计方案的实现(2)
- 路由模拟——设计方案的实现(3)
- 路由模拟——设计方案的实现(1)
- 路由模拟——设计方案的实现(4)
- 路由模拟——设计方案的实现(5)
- 跨机房微服务高可用方案:DerbySoft路由服务设计与实现
- 设计一个可变式分区分配的存储管理方案。并模拟实现分区的分配和回收过程
- 停车场模拟管理程序的设计与实现
- 协议设计:如何实现一个最简单的通信协议(线程模拟)
- 简单的asp.net模拟邮箱系统基础实现(一 总体功能版块的设计,与简单数据库的设计)
- 常用限流方案的设计和实现
- 实现观察者模式设计方案
- 项目实战笔记 | C++ 实现银行排队服务模拟1 数据结构设计 |实验楼项目
- React 路由懒加载的几种实现方案
- 数据字典项 设计实现方案
- CCBPM关于工作流引擎取回审批的设计方案与实现过程
- 安全登录系统的设计与实现方案
- 路由模拟——路由算法1的实现(结点集合类)