- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
山东大学威海分校信息工程学院软件工程系
基于距离向量算法的路由协议的实现实验报告
编号:
姓名
杜焓
院系
信息工程学院
学号
20078001075
任课教师
程杰
指导教师
程杰
实验地点
电子楼201
实验时间
11.10
实验名称
用C++模拟RIP协议的实现过程
同 组 人
预习报告(对实验主要内容的认识)
得分
RIP协议主要是通过对一个网络中的多个路由每个一定时间使用距离向量算法,从而实现每个路由中的路由表中的信息存储为该路由到每个网段的最短距离及其下一跳。
实验内容(问题,思路,程序,结果)
得分
我的思路是先使用一个txt文档保存一个网络的基本信息,每行三个基本信息。
分别为网段名,与连接次网段的两个路由器名。举例如下:
存于txt文档中的相关信息如下:
id1 R1 R2
id2 R3 R4
id3 R4 R6
id4 R2 R7
id5 R2 R3
id6 R6 R8
id7 R3 R8
id8 R7 R8
id9 R1 R3
可以把它保存为net_route.txt。
把这个文件放和.cpp文件放在同一文件夹下,即可运行程序。程序中会出现相应的路由表信息。
程序代码如下:
#includeiostream
#includefstream
#includestring
#includelist
#includesstream
#includewindows.h
using namespace std;
#define MAX 100 //最大路由数
/*
********************
下面是存储类型的三个类
********************
*/
class Net_sec;
//路由类相当于头结点
class Route{
public:
string route;
Net_sec *next;
};
//网段类,包含相邻弧的信息(不用route_f,用next),也可用于存储文件读入信息(用route_f,不用next)
class Net_sec{
public:
string net_id;
string route_f;
string route_n;
Net_sec* next;
};
//路由表内容类
class Contents{
public:
string net_id;
int diatance;
string next_stop;
};
/*
********************
上面是存储类型的三个类
********************
*/
//路由表和网段类
class Route_net{
public:
void open_file(ifstream infile);
Route_net();
bool judge(string str);
void Init_routes();
void show();
void change(int i);
void update(int i);
void UPDATE();
bool neighbor(int i,int j);//j和i相邻吗
private:
listNet_sec li; //读取信息存储在这
Route route[MAX]; //存储图的信息,即各路由的邻接表
listContents routes[MAX]; //存储各路由路由表
listContents temp; //用于存储处理后的临时路由表
string flection[MAX]; //用于对应路由器与存储序列标号
int sum; //用于统计路由个数
};
//打开文件函数
void Route_net::open_file(ifstream infile){
string filename;
coutenter the name of the file which contains information of routes and network section :;
cinfilename;
infile.open((filename+.txt).c_str());
if(!infile){
cerrfile open error!endl;
exit(1);
}
}
//构造函数
Route_net::Route_net(){
ifstream infile;
istringstream strm;
string a_line;
Net_sec t1;
open_file(infile);
while(get
文档评论(0)