VC语言

本类阅读TOP10

·VC++下使用ADO编写数据库程序
·VC++ 学习笔记(二)
·Windows消息大全
·每个开发人员现在应该下载的十种必备工具
·在2000和xp下,隐藏进程,VC6.0测试通过!!!
·用Visual C++打造IE浏览器(1)
·Netmsg 局域网聊天程序
·教你用VC6做QQ对对碰外挂程序
·VC++学习笔记(四)
·VC++中经常使用的函数!~~

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
路由模拟——设计方案的实现(5)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

 

2, 路由器从端口接收数据

方法名称:              CentralRout::ReceiveData

方法参数:            

返回值:              

方法的目的:           路由器从路由器端口读数据的过程。如果成功则执行路由计算。

可能的出错:          

// 路由器从端口接收数据

void CentralRout::ReceiveData(void)

{

     dataIter = dataInList.begin();

     if(dataIter != dataInList.end())

     {//读取一个数据包

          currIPData.SetAddressFrom(dataIter->GetAddressFrom());

          currIPData.SetAddressTo(dataIter->GetAddressTo());

          currIPData.SetNextHop(dataIter->GetNextHop());

          currIPData.SetPreHop(dataIter->GetPreHop());

          currIPData.ID = dataIter->ID;

          currIPData.SetIPData(dataIter->GetIPData());

         //从端口删除所取数据包

          dataInList.erase(dataIter);

          dataListLength --;

         //执行路由计算

          DataRoutCompute();

     }

}

3 对当前数据包进行路由计算

方法名称:              AbsRout::DataRoutCompute

方法参数:            

返回值:              

方法的目的:           路由器对当前数据包进行计算,以判断它要被送往哪一个路由器。然后调用路由器向端口写数据的过程。

可能的出错:          

// 对当前数据包进行路由计算

void AbsRout::DataRoutCompute(void)

{

     currIPData.SetPreHop(selfAddress);

     unsigned int *addr=routTable.GetAddrNextHop(currIPData.GetAddressTo());

     currIPData.SetNextHop(addr);

 

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

     //向控制台输出提示信息

     std::cout<<"\n\t计算成功...";

     std::cout<<"\n\tNext Hop:";

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

          std::cout<<addr[i];

     std::cout<<std::endl;

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

     SendData();

}

 

4 路由器向端口发送数据

方法名称:              CentralRout::SendData

方法参数:            

返回值:              

方法的目的:           路由器向端口写数据的过程。

可能的出错:          

// 路由器向端口发送数据

void CentralRout::SendData(void)

{

     dataOutList.push_back(currIPData);

}

5 网络从路由器端口接收数据

方法名称:              CentralRout::NetReadData

方法参数:            

返回值:                NetData *

方法的目的:           网络从路由器端口中读取数据包的拷贝,将该数据包拷贝返回。IPData和Message作不同的处理。本方案实现较为简洁,实时模拟需要扩充代码。

可能的出错:          

// 网络从路由器端口接收数据

NetData * CentralRout::NetReadData()

{

     NetData *_netData = NULL;

     dataIter = dataOutList.begin();

     if(dataIter!=dataOutList.end())

     {

          if(!dataIter->IsMessage())

         {

              _netData = new NetData(false);

              _netData->SetAddressFrom(dataIter->GetAddressFrom());

              _netData->SetAddressTo(dataIter->GetAddressTo());

              _netData->SetPreHop(dataIter->GetPreHop());

              _netData->SetNextHop(dataIter->GetNextHop());

               _netData->ID = dataIter->ID;

              _netData->SetIPData(dataIter->GetIPData());

              //从语义上讲,路由器每送出一个数据包,就应该启动一个记时器,

              //以等待应答消息;或者某种机制代替记时器,来做重传的依据。

              //代码待扩充。

         }else if(dataIter->IsMessage())

         {

              _netData = new NetData(true);

              _netData->SetAddressFrom(dataIter->GetAddressFrom());

              _netData->SetAddressTo(dataIter->GetAddressTo());

              _netData->SetPreHop(dataIter->GetPreHop());

              _netData->SetNextHop(dataIter->GetNextHop());

              _netData->ID = dataIter->ID;

              //应答消息不重传

              dataOutList.erase(dataIter);

         }//end of else if

     }//end of if

 

     return _netData;

}

 

                                                             <未完>

 




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有