距离矢量路由算法实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//结点g
m[0][i]=a.x[0][6]+g.x[6][i];
n[0][i]=6;
k=1;
}
for(int i=0;i<8;i++)
//将b结点的邻居节点的表传给b
if(m[1][i]>(b.x[1][2]+c.x[2][i])){
//结点c
m[1][i]=b.x[1][2]+c.x[2][i];
Jiedian c=new Jiedian(); c.x[2][0]=1000; c.x[2][1]=7; c.y[1]=1; c.x[2][2]=0; c.y[2]=2; c.x[2][3]=3; c.y[3]=3; c.x[2][4]=1000; c.x[2][5]=3; c.y[5]=5; c.x[2][6]=1000; c.x[2][7]=1000;
n[2][i]=1;
k=1;
}
for(int i=0;i<8;i++)
if(m[2][i]>(c.x[2][3]+d.x[3][i])){
//结点d
m[2][i]=c.x[2][3]+d.x[3][i];
n[2][i]=3;
k=1;
}
for(int i=0;i<8;i++)
if(m[2][i]>(c.x[2][5]+f.x[5][i])){
Jiedian e=new Jiedian(); e.x[4][0]=1000; e.x[4][1]=2; e.y[1]=1; e.x[4][2]=1000; e.x[4][3]=1000; e.x[4][4]=0; e.y[4]=4; e.x[4][5]=2; e.y[5]=5; e.x[4][6]=1; e.y[6]=6; e.x[4][7]=1000;
} for(int i=0;i<8;i++)
if(m[5][i]>(f.x[5][7]+h.x[7][i])){ m[5][i]=f.x[5][7]+h.x[7][i]; n[5][i]=7; k=1;
}
//将f的邻居结点的表 //结点c
//结点e
//结点f
for(int i=0;i<8;i++) 传给g
Jiedian d=new Jiedian(); d.x[3][0]=1000; d.x[3][1]=1000; d.x[3][2]=3;
d.y[2]=2; d.x[3][3]=0; d.y[3]=3; d.x[3][4]=1000; d.x[3][5]=1000; d.x[3][6]=1000; d.x[3][7]=2; d.y[7]=7;
Jiedian f=new Jiedian(); f.x[5][0]=1000; f.x[5][1]=1000; f.x[5][2]=3; f.y[2]=2; f.x[5][3]=1000; f.x[5][4]=2; f.y[4]=4; f.x[5][5]=0; f.y[5]=5; f.x[5][6]=1000; f.x[5][7]=2; f.y[7]=7;
//结点f
m[2][i]=c.x[2][5]+f.x[5][i];
n[2][i]=5;
k=1;
}
for(int i=0;i<8;i++) 传给d
if(m[3][i]>(d.x[3][2]+c.x[2][i])){ m[3][i]=d.x[3][2]+c.x[2][i]; n[3][i]=2; k=1;
//将g的邻居结点的表 //结点a
//结点e
n[6][i]=4; k=1; } for(int i=0;i<8;i++) if(m[6][i]>(g.x[6][7]+h.x[7][i])){ m[6][i]=g.x[6][7]+h.x[7][i]; n[6][i]=7; k=1; }
//结点h
for(int i=0;i<8;i++) 传给g
} for(int i=0;i<8;i++)
if(m[7][i]>(h.x[7][6]+g.x[6][i])){ m[7][i]=h.x[7][6]+g.x[6][i]; n[7][i]=6; k=1;
a.y[0]=0; //a结点(即0结点)到0结点路径上第一个结点为0 a.x[0][1]=2; a.y[1]=1; a.x[0][2]=1000; //如果没有直接路径则定义为1000便是无穷远 a.x[0][3]=1000; a.x[0][4]=1000; a.x[0][5]=1000; a.x[0][6]=6; a.y[6]=6; a.x[0][7]=1000;
Jiedian b=new Jiedian(); b.x[1][0]=2; b.y[0]=0; b.x[1][1]=0; b.y[1]=1; b.x[1][2]=7; b.y[2]=2; b.x[1][3]=1000; b.x[1][4]=2; b.y[4]=4; b.x[1][5]=1000; b.x[1][6]=1000; b.x[1][7]=1000;
} for(int i=0;i<8;i++)
//将e的邻居结点的表 //结点b
if(m[4][i]>(e.x[4][5]+f.x[5][i])){ m[4][i]=e.x[4][5]+f.x[5][i]; n[4][i]=5; k=1;
} for(int i=0;i<8;i++)
if(m[4][i]>(e.x[4][6]+g.x[6][i])){ m[4][i]=e.x[4][6]+g.x[6][i]; n[4][i]=6; k=1;
Jiedian h=new Jiedian(); h.x[7][0]=1000; h.x[7][1]=1000; h.x[7][2]=1000; h.x[7][3]=2; h.y[3]=3; h.x[7][4]=1000; h.x[7][5]=2; h.y[5]=5; h.x[7][6]=4; h.y[6]=6; h.x[7][7]=0; h.y[7]=7;
1.实验目的:
1.同学通过演示软件,验证距离矢量路由选择算法的功能和性能,了解动态路由 算法的运行机制。 2.通过设置不同的网络拓扑结构和线路延迟,掌握路由表的计算方法。 3.编写一个路由选择算法的程序:由所给网络拓扑图和线路延迟,自动更新路由 表。
2.实验环境:
1.Windws 9x/NT/2000/XP/2003/2008/Vista/7 2.TCP/IP 协议
传给a
if(m[0][i]>(a.x[0][1]+b.x[1][i])){
//结点b
m[0][i]=a.x[0][1]+b.x[1][i];
n[0][i]=1;
k=1;
//标记。如果标有变动则k=1
}
for(int i=0;i<8;i++)
if(m[0][i]>(a.x[0][6]+g.x[6][i])){
int y[]=new int[8]; //存放路径上的下一个节点 int x[][]=new int[8][8]; //存放节点间的距离
} public class Luyou {
public static void main(String[] args) {
Jiedian a=new Jiedian(); a.x[0][0]=0; //结点0到结点0的距离为0
n[1][i]=2;
k=1;
}
for(int i=0;i<8;i++)
if(m[1][i]>(b.x[1][0]+a.x[0][i])){
//结点a
m[1][i]=b.x[1][0]+a.x[0][i];
n[1][i]=0;
k=1;
}
for(int i=0;i<8;i++)
if(m[1][i]>(b.x[1][4]+e.x[4][i])){
n[0][i]=a.y[i]; n[1][i]=b.y[i];
n[2][i]=c.y[i]; n[3][i]=d.y[i]; n[4][i]=e.y[i]; n[5][i]=f.y[i]; n[6][i]=g.y[i]; n[7][i]=h.y[i]; }
for(int i=0;i<8;i++)
//将a的邻居结点的表
3.试验方法:
1.验证网络的路由功能; 2.改变线路延迟,验证该算法的自适应能力; 3.验证各路由器的路由表计算结果; 4.该算法存在什么问题?如何改进? 5.设置不同的网络拓扑结构,验证网络的路由功能; 6.尝试编写路由算法程序。
4.实验操作
源代码
package wangluo; class Jiedian {
} for(int i=0;i<8;i++)
if(m[3][i]>(d.x[3][7]+h.x[7][i])){ m[3][i]=d.x[3][7]+h.x[7][i]; n[3][i]=7; k=1;
}
//将d的邻居结点的表 //结点c
//结点h
for(int i=0;i<8;i++) 传给e
if(m[4][i]>(e.x[4][1]+b.x[1][i])){ m[4][i]=e.x[4][1]+b.x[1][i]; n[4][i]=1; k=1;
上海理工大学
光电信息与计算机学院
实验报告
实验名称____________________________ 课程名称____________________________
姓名:_______________ 日期:_______________ 成绩:_______________
学号:_______________ 地点:_______________ 教师:_______________
Jiedian g=new Jiedian(); g.x[6][0]=6; g.y[0]=0; g.x[6][1]=1000; g.x[6][2]=1000; g.x[6][3]=1000; g.x[6][4]=1;
g.y[4]=4; g.x[6][5]=1000; g.x[6][6]=0; g.y[6]=6; g.x[6][7]=4; g.y[7]=7;
if(m[7][i]>(h.x[7][3]+d.x[3][i])){ m[7][i]=h.x[7][3]+d.x[3][i]; n[7][i]=3; k=1;
} for(int i=0;i<8;i++)
if(m[7][i]>(h.x[7][5]+f.x[5][i])){ m[7][i]=h.x[7][5]+f.x[5][i]; n[7][i]=5; k=1;
int m[][]=new int[8][8]; //暂时存放各节点新表 int n[][]=new int[8][8]; //暂时存放各结点到其他节点的路径上的第一 个途经结点
int k=0;
do{ k=0;
//for(int j=0;j<6;j++){
for(int i=0;i<8;i++){ m[0][i]=a.x[0][i]; m[1][i]=b.x[1][i]; m[2][i]=c.x[2][i]; m[3][i]=d.x[3][i]; m[4][i]=e.x[4][i]; m[5][i]=f.x[5][i]; m[6][i]=g.x[6][i]; m[7][i]=h.x[7][i];
if(m[6][i]>(g.x[6][0]+a.x[0][i])){ m[6][i]=g.x[6][0]+a.x[0][i]; n[6][i]=0; k=1;
} for(int i=0;i<8;i++)
if(m[6][i]>(g.x[6][4]+e.x[4][i])){ m[6][i]=g.x[6][4]+e.x[4][i];
//结点e
m[1][i]=b.x[1][4]+e.x[4][i];
n[1][i]=4;
k=1;
பைடு நூலகம்
}
for(int i=0;i<8;i++)
//将c的邻居结点的表传给c
if(m[2][i]>(c.x[2][1]+b.x[1][i])){
//结点b
m[2][i]=c.x[2][1]+b.x[1][i];
}
//结点f //结点g
for(int i=0;i<8;i++) 传给f
if(m[5][i]>(f.x[5][2]+c.x[2][i])){ m[5][i]=f.x[5][2]+c.x[2][i]; n[5][i]=2; k=1;
} for(int i=0;i<8;i++)
if(m[5][i]>(f.x[5][4]+e.x[4][i])){ m[5][i]=f.x[5][4]+e.x[4][i]; n[5][i]=4; k=1;
相关文档
最新文档