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

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

五,路由过程

本实现部分为整个系统执行时序的表现,如果与通信模拟系统整合,本部分是不需要的。所以这部分是为单独调试而写的。为了检验路由模拟系统,写了一个单数据包路由的过程。但语义基本上是完整的。如果在通信模拟系统里实现这一部分,可以同步详尽的扩充设计。

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 完成>

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