计算机网络实验报告2014年讲解

上传人:最**** 文档编号:114741972 上传时间:2019-11-12 格式:DOC 页数:19 大小:298.67KB
返回 下载 相关 举报
计算机网络实验报告2014年讲解_第1页
第1页 / 共19页
计算机网络实验报告2014年讲解_第2页
第2页 / 共19页
计算机网络实验报告2014年讲解_第3页
第3页 / 共19页
计算机网络实验报告2014年讲解_第4页
第4页 / 共19页
计算机网络实验报告2014年讲解_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《计算机网络实验报告2014年讲解》由会员分享,可在线阅读,更多相关《计算机网络实验报告2014年讲解(19页珍藏版)》请在金锄头文库上搜索。

1、 计算机网络 实 验 报 告 学生姓名 学 号 09091219 专业班级 计科12 指导教师 学 院 信息科学与工程学院 完成时间 2014年5月实验一 网络路由层协议模拟实验 【实验目的和要求】1. 掌握VB、VC+、VS或JAVA等集成开发环境编写路由仿真程序的方法;2. 理解并掌握距离向量路由协议和链路状态路由协议的工作原理。【实验内容】 模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。基本要求(动态生成网络拓扑图,节点间的距离随机生成。从初始路由表开始,进行交换路由表,演示每轮交换后的路由表的变化。观察和讨论多少轮交换后路由表稳定)【实验原理】 距离矢量路由算法”的

2、基本思想如下:每个路由器维护一个距离矢量(通常是以延时是作变量的)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。每个距离矢量表项包括两部分:到达目的结点的最佳输出线路,和到达目的结点所需时间或距离,通信子网中的其它每个路由器在表中占据一个表项,并作为该表项的索引。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来,这样各路由器只需要查看这个距离矢量表就可以为不同来源分组找到一条最佳的路由。【编程语言和环境】1. Windows操作系统,编

3、程语言C+2. 编程环境VC【实验具体设计实现及结果(含流程图及关键代码说明)】采用网络拓扑结构CDAGEFB93524581源代码:#include stdio.h#include stdlib.h#include conio.h /atoi的头文件#define ROUTNUM 7 /定义路由的个数为7个typedef structint dis; /存延迟大小int from; /存下一跳的路由RoutNode;RoutNode dataROUTNUMROUTNUM;/*路由表,能存7行7列数据,数据为权值*/void InitData(FILE* pfile);/*从数据文件读取数据,

4、初始化路由表*/void OutputRoutData();/*输出所有的路由表*/void Communication(int recv, int send);/*send点向recv点发送自己的路由表*/void Exchange();/*所有节点进行一次数据交换, 更新路由表*/void main()int start, end, i, j;FILE *pfile;pfile = fopen(1.txt, r);if (pfile = NULL)printf(文件打开错误,按任意键退出.n);getch();return;elseprintf(n路由表初始:n);InitData(pfi

5、le);fclose(pfile);for (i = 0; iROUTNUM; i+)printf(%c|, i + 65);for (j = 0; j 0)printf( , j + 65, dataij.dis);printf(n); /显示各路由的路由表 for (i = 0; i ROUTNUM; i+) /循环7次(好像多余,改成一次得到同样结果)Exchange(); printf(n路由表交换:n);OutputRoutData();printf(输入起始路由节点数字(%d-%d)0代表A,1代表B. : , 0, ROUTNUM - 1);scanf(%d, &start);p

6、rintf(输入终点路由节点数字(%d-%d)0代表A,1代表B. : , 0, ROUTNUM - 1);scanf(%d, &end);if (start = end | start 6 | end 6)printf(n输入错误,请按任意键退出n);getch();return;elseint cur = start;int total = 0;if (datastartend.dis , cur + 65);while (datacurend.from = 0) /起始点与终点不相连。0是Atotal += datacurdatacurend.from.dis; /total变成cur与

7、下一跳的延迟printf(%c-, datacurend.from + 65);cur = datacurend.from; /起始路由变成下一跳 total += datacurend.dis;printf(%cn总的路由距离 = %d, end + 65, total);getch();return; void InitData(FILE *pfile)char num10;int i = 0;char c;int m, n;fseek(pfile, 0, 0); /文件指针从距0位置0距离开始读取for (m = 0; !feof(pfile) & m 7; m+) /feof(pfil

8、e),文件尾返回1,不是返回0.即不是文件尾部且m7循环.for (n = 0; !feof(pfile) & n = 0 & c = 9) | c = -) /*如果读到数字或符号.本题路由权值只能0到9*/numi+ = c; /*end of else if*/ /*end of while*/ /*end of for (n = 0*/ /*end of for (m = 0*/void OutputRoutData()int i, j;printf( );for (i = 0; i ROUTNUM; i+)printf( %c , i + 65);printf(n);for (i =

9、 0; i ROUTNUM; i+)printf(%c , i + 65);for (j = 0; j ROUTNUM; j+)if (dataij.dis =10)printf( %d, dataij.dis);elseprintf( %d, dataij.dis);if (dataij.from 0)/如果未经过其它节点 所以直接相连的路由下一跳为-1printf( - );elseprintf( %c , dataij.from + 65); /输出下一跳路由 printf(n); void Communication(int recv, int send) /相连的两路由recv和send交换数据计算一次得到暂时最短距离int i;for (i = 0; i 0)/如果send节点到i号节点有路线if (datarecvi.dis datasendi.dis + datarecvsend.dis)/第二种recv与i相连,且直接相连值大于间接到i的延迟/如果现有路径比新路径远datarecvi.dis = datasendi.dis + datarecvsend.dis; /将recv到i的延迟改为间接延迟的值datarecvi.from = send;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号