计算机网络实验报告

合集下载

计算机网络实验二实验报告讲解

计算机网络实验二实验报告讲解

计算机网络实验二实验报告讲解实验二:网络传输性能的测试与评估实验目的:1.掌握网络传输性能的测试方法;2.了解网络传输性能评估的参数;3. 学会使用JPerf工具进行网络传输性能测试。

实验环境:1. JPerf软件;2. 两台运行Windows操作系统的计算机;3.以太网交换机;4.网线,以连接两台计算机及交换机。

实验步骤:1.配置网络环境连接两台计算机和交换机,保证网络连接正常。

2. 安装JPerf软件在两台计算机上分别安装JPerf软件。

3. 运行JPerf服务器选择一台计算机作为服务器,打开JPerf程序,选择“Server”模式,并设置端口号。

4. 运行JPerf客户端打开另一台计算机的JPerf程序,选择“Client”模式,并输入服务器的IP地址和端口号。

5.设置测试参数在JPerf客户端上,设置传输模式(TCP/UDP)、传输时长和数据包大小等参数,并点击“Start”按钮开始测试。

6.分析结果测试结束后,JPerf会输出传输性能测试的结果,包括带宽、丢包率、延迟等参数。

根据这些参数可以评估网络的传输性能。

实验结果与分析:在测试过程中,我们选择了TCP传输模式,传输时长设置为30秒,数据包大小为1MB。

根据测试结果,我们得到了以下性能参数:带宽:100Mbps丢包率:0%延迟:10ms根据带宽和延迟,我们可以评估网络的传输性能。

带宽表示单位时间内能够传输的数据量,带宽越大,传输速度越快。

延迟表示数据从发送方到接收方的传输延时,延迟越小,传输速度越快。

丢包率表示发送的数据在传输过程中丢失的比例,丢包率越小,数据传输越可靠。

在这个实验中,我们得到了较高的带宽和较低的延迟,说明网络的传输性能较好。

同时,丢包率为0%,说明数据传输的可靠性也很高。

根据这些结果,我们可以对网络的传输性能进行评估。

如果带宽较小、延迟较大或丢包率较高,就会影响数据的传输速度和可靠性,从而降低网络的传输性能。

因此,在设计和配置网络时,需要考虑这些因素,以提高网络的传输性能。

计算机网络 实验报告

计算机网络 实验报告

计算机网络实验报告计算机网络实验报告引言计算机网络是现代社会中不可或缺的一部分,它连接了世界各地的计算机,使得信息的传递和共享变得更加便捷和高效。

本实验旨在通过构建一个简单的局域网,了解计算机网络的基本原理和技术。

一、实验背景计算机网络是由多个计算机和网络设备通过通信链路互相连接而成的。

它可以分为局域网(LAN)、城域网(MAN)和广域网(WAN)。

在本实验中,我们将构建一个局域网,以便更好地理解网络的工作原理。

二、实验目的1. 了解局域网的基本概念和特点;2. 掌握局域网的构建方法和技术;3. 熟悉网络设备的配置和管理。

三、实验步骤1. 确定网络拓扑结构:在本实验中,我们选择星型拓扑结构。

这意味着所有计算机都连接到一个中央设备(交换机)上。

2. 连接硬件设备:将计算机和交换机通过以太网线连接起来。

确保每个计算机都与交换机直接相连。

3. 配置网络设备:通过交换机的管理界面,设置每个接口的IP地址和子网掩码。

确保每个计算机都具有唯一的IP地址。

4. 测试网络连接:打开每台计算机的终端,使用ping命令测试与其他计算机的连接。

确保网络连接正常。

四、实验结果通过以上步骤,我们成功地构建了一个局域网。

每台计算机都能够与其他计算机进行通信,并且可以共享文件和资源。

通过ping命令,我们还测试了网络的可达性和延迟情况,结果显示网络连接良好。

五、实验总结通过本次实验,我们深入了解了计算机网络的基本原理和技术。

我们学会了如何构建一个简单的局域网,并且掌握了网络设备的配置和管理方法。

这些知识对于今后的学习和工作都具有重要意义。

六、实验感想本次实验让我对计算机网络有了更深入的了解。

我意识到计算机网络是现代信息社会的基石,它连接了世界各地的计算机和人们的生活。

通过实际操作,我不仅学到了理论知识,还体会到了网络技术的实际应用。

我相信这些知识和经验将对我的未来发展产生积极的影响。

七、实验改进尽管本次实验取得了较好的结果,但仍有一些改进的空间。

《计算机网络技术》实验报告格式

《计算机网络技术》实验报告格式

《计算机网络技术》实验报告格式一、实验名称具体实验名称二、实验目的阐述进行本次实验的主要目的,例如:1、加深对计算机网络基本概念和原理的理解。

2、熟悉网络设备的配置和管理方法。

3、掌握网络协议的分析和应用。

4、培养解决网络问题的实际能力。

三、实验环境1、硬件环境列出所使用的计算机型号、配置等信息。

描述网络设备的类型、型号,如交换机、路由器等。

2、软件环境说明操作系统的版本,如 Windows 10、Linux 等。

列举所使用的网络模拟软件或工具,如 Packet Tracer、Wireshark 等,并注明其版本号。

四、实验内容及步骤详细描述实验的具体内容和操作步骤,应包括以下几个方面:1、网络拓扑结构的设计与搭建画出实验所设计的网络拓扑结构图,标注各个设备的名称、IP 地址等关键信息。

说明如何通过物理连接或软件模拟实现网络拓扑结构。

2、网络设备的配置针对所使用的交换机、路由器等设备,详细描述其配置过程,包括VLAN 的划分、端口的设置、路由协议的配置等。

给出具体的配置命令和参数,并解释其作用。

3、网络服务的部署与测试描述如何部署常见的网络服务,如 DHCP 服务、DNS 服务、Web服务等。

测试所部署的网络服务是否正常工作,记录测试结果和出现的问题。

4、网络协议的分析使用网络协议分析工具(如 Wireshark)捕获网络数据包。

对捕获的数据包进行分析,解读其协议头字段的含义,了解数据在网络中的传输过程。

5、网络故障的排查与解决模拟网络故障,如网络连接中断、IP 地址冲突等。

描述排查故障的思路和方法,以及采取的解决措施。

五、实验结果1、网络拓扑结构的实现效果展示实际搭建的网络拓扑结构是否与设计相符。

提供网络设备连接状态、指示灯等方面的信息。

2、网络设备配置的验证验证交换机、路由器等设备的配置是否生效,如 VLAN 划分是否正确、路由是否可达等。

给出相关的测试命令和输出结果。

3、网络服务的运行情况说明所部署的网络服务是否能够正常提供服务,如客户端是否能够获取 IP 地址、能否正常访问网站等。

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)

计算机网络实验报告(6篇)计算机网络实验报告(通用6篇)计算机网络实验报告篇1一、实验目的1、熟悉微机的各个部件;2、掌握将各个部件组装成一台主机的方法和步骤;3、掌握每个部件的安装方法;4、了解微型计算机系统的基本配置;5、熟悉并掌握DOS操作系统的使用;6、掌握文件、目录、路径等概念;7、掌握常用虚拟机软件的安装和使用;8、熟悉并掌握虚拟机上WINDOWS操作系统的安装方法及使用;9、掌握使用启动U盘的制作和U盘安装windows操作系统的方法;10、了解WINDOWS操作系统的基本配置和优化方法。

二、实验内容1.将微机的各个部件组装成一台主机;2.调试机器,使其正常工作;3.了解计算机系统的基本配置。

4.安装及使用虚拟机软件;5.安装WINDOWS7操作系统;6.常用DOS命令的使用;7.学会制作启动U盘和使用方法;8.WINDOWS7的基本操作;9.操作系统的基本设置和优化。

三、实验步骤(参照实验指导书上的内容,结合实验过程中做的具体内容,完成此项内容的撰写)四、思考与总结(写实验的心得体会等)计算机网络实验报告篇2windows平台逻辑层数据恢复一、实验目的:通过运用软件R-Studio_5.0和winhe_对误格式化的硬盘或者其他设备进行数据恢复,通过实验了解windows平台逻辑层误格式化数据恢复原理,能够深入理解并掌握数据恢复软件的使用方法,并能熟练运用这些软件对存储设备设备进行数据恢复。

二、实验要求:运用软件R-Studio_5.0和winhe_对电脑磁盘或者自己的U盘中的删除的数据文件进行恢复,对各种文件进行多次尝试,音频文件、系统文件、文档文件等,对简单删除和格式化的磁盘文件分别恢复,并检查和验证恢复结果,分析两个软件的数据恢复功能差异与优势,进一步熟悉存储介质数据修复和恢复方法及过程,提高自身的对存储介质逻辑层恢复技能。

三、实验环境和设备:(1)Windows _P 或Windows 20__ Professional操作系统。

《计算机网络实验》实验报告

《计算机网络实验》实验报告

《计算机网络实验》实验报告一、实验目的计算机网络实验是计算机相关专业学习中的重要实践环节,通过实验操作,旨在深入理解计算机网络的基本原理、协议和技术,提高我们的动手能力和解决实际问题的能力。

具体目的包括:1、熟悉计算机网络的体系结构和各层协议的工作原理。

2、掌握网络设备的配置和管理方法,如交换机、路由器等。

3、学会使用网络工具进行网络性能测试和故障诊断。

4、培养团队合作精神和沟通能力,提高解决复杂问题的综合素养。

二、实验环境本次实验在学校的计算机网络实验室进行,实验室配备了以下设备和软件:1、计算机若干台,安装了 Windows 操作系统和相关网络工具软件。

2、交换机、路由器等网络设备。

3、网络线缆、跳线等连接设备。

三、实验内容及步骤实验一:以太网帧的捕获与分析1、打开网络协议分析软件 Wireshark。

2、将计算机连接到以太网中,启动捕获功能。

3、在网络中进行一些数据传输操作,如访问网站、发送文件等。

4、停止捕获,对捕获到的以太网帧进行分析,包括帧的格式、源地址、目的地址、类型字段等。

实验二:交换机的基本配置1、连接交换机和计算机,通过控制台端口进行配置。

2、设置交换机的主机名、管理密码。

3、划分 VLAN,并将端口分配到不同的 VLAN 中。

4、测试不同 VLAN 之间的通信情况。

实验三:路由器的基本配置1、连接路由器和计算机,通过控制台端口或Telnet 方式进行配置。

2、设置路由器的接口 IP 地址、子网掩码。

3、配置静态路由和动态路由协议(如 RIP 或 OSPF)。

4、测试网络的连通性。

实验四:网络性能测试1、使用 Ping 命令测试网络的延迟和丢包率。

2、利用 Tracert 命令跟踪数据包的传输路径。

3、使用网络带宽测试工具测试网络的带宽。

四、实验结果与分析实验一结果与分析通过对捕获到的以太网帧的分析,我们清楚地看到了帧的结构,包括前导码、目的地址、源地址、类型字段、数据字段和帧校验序列等。

网络安全实验报告[共五篇]

网络安全实验报告[共五篇]

网络安全实验报告[共五篇]第一篇:网络安全实验报告实验一:网络扫描实验【实验目的】了解扫描的基本原理,掌握基本方法,最终巩固主机安全【实验内容】1、学习使用Nmap的使用方法2、学习使用漏洞扫描工具【实验环境】1、硬件 PC机一台。

2、系统配置:操作系统windows XP以上。

【实验步骤】1、端口扫描1)解压并安装ipscan15.zip,扫描本局域网内的主机2)解压nmap-4.00-win32.zip,安装WinPcap运行cmd.exe,熟悉nmap命令(详见“Nmap详解.mht”)。

3)试图做以下扫描:扫描局域网内存活主机,扫描某一台主机或某一个网段的开放端口扫描目标主机的操作系统试图使用Nmap的其他扫描方式,伪源地址、隐蔽扫描等2、漏洞扫描解压X-Scan-v3.3-cn.rar,运行程序xscan_gui.exe,将所有模块选择扫描,扫描本机,或局域网内某一台主机的漏洞【实验背景知识】1、扫描及漏洞扫描原理见第四章黑客攻击技术.ppt2、NMAP使用方法扫描器是帮助你了解自己系统的绝佳助手。

象Windows 2K/XP 这样复杂的操作系统支持应用软件打开数百个端口与其他客户程序或服务器通信,端口扫描是检测服务器上运行了哪些服务和应用、向Internet或其他网络开放了哪些联系通道的一种办法,不仅速度快,而且效果也很不错。

Nmap被开发用于允许系统管理员察看一个大的网络系统有哪些主机以及其上运行何种服务。

它支持多种协议的扫描如UDP,TCP connect(),TCP SYN(half open), ftp proxy(bounce attack),Reverse-ident, ICMP(ping sweep), FIN, ACK sweep,Xmas Tree, SYN sweep,1 和Null扫描。

可以从SCAN TYPES一节中察看相关细节。

Nmap还提供一些实用功能如通过tcp/ip来甄别操作系统类型、秘密扫描、动态延迟和重发、平行扫描、通过并行的PING侦测下属的主机、欺骗扫描、端口过滤探测、直接的RPC扫描、分布扫描、灵活的目标选择以及端口的描述。

《计算机网络》实验报告

《计算机网络》实验报告

一、实验目的1. 理解计算机网络的基本概念和结构。

2. 掌握网络设备的配置方法,包括交换机、路由器等。

3. 学习网络协议的作用和配置方法,如TCP/IP、DHCP等。

4. 通过实验加深对网络故障诊断和排除能力的培养。

二、实验内容1. 实验环境实验设备:一台PC机、一台交换机、一台路由器、双绞线、网线等。

实验软件:Windows操作系统、网络管理软件等。

2. 实验步骤(1)网络设备连接首先,将PC机通过网线连接到交换机的一个端口上。

然后,将交换机的另一个端口连接到路由器的WAN口。

最后,将路由器的LAN口连接到PC机的另一台交换机上。

(2)网络设备配置①交换机配置进入交换机命令行界面,配置交换机的基本参数,如VLAN ID、IP地址、子网掩码等。

②路由器配置进入路由器命令行界面,配置路由器的接口参数,如WAN口和LAN口的IP地址、子网掩码等。

同时,配置路由协议,如静态路由、动态路由等。

③PC机配置在PC机的网络设置中,将IP地址、子网掩码、默认网关等信息设置为与路由器LAN口相同的参数。

(3)网络测试①测试PC机与交换机之间的连通性在PC机中ping交换机的IP地址,检查PC机是否能够与交换机通信。

②测试PC机与路由器之间的连通性在PC机中ping路由器的IP地址,检查PC机是否能够与路由器通信。

③测试不同VLAN之间的连通性在PC机中ping另一个VLAN中的设备,检查不同VLAN之间的设备是否能够相互通信。

三、实验结果与分析1. 实验结果(1)PC机与交换机之间连通(2)PC机与路由器之间连通(3)不同VLAN之间的设备相互通信2. 实验分析通过本次实验,我们成功搭建了一个简单的计算机网络,并掌握了网络设备的配置方法。

在实验过程中,我们遇到了一些问题,如网络设备之间的连通性、VLAN之间的通信等。

通过查阅资料和调试,我们解决了这些问题,加深了对计算机网络的理解。

四、实验总结1. 通过本次实验,我们了解了计算机网络的基本概念和结构,掌握了网络设备的配置方法。

计算机网络综合实验报告参考5篇

计算机网络综合实验报告参考5篇

计算机网络综合实验报告参考5篇计算机网络综合实验报告参考 (1) ××大学校园网解决方案一、需求分析建设一个以办公自动化、计算机辅助教学、现代计算机校园文化为核心,以现代网络技术为依托,技术先进、扩展性强、能覆盖全校主要楼宇的校园主干网络,将学校的各种pc机、工作站、终端设备和局域网连接起来,并与有关广域网相连,在网上宣传自己和获取Internet网上的教育资源。

形成结构合理,内外沟通的校园计算机系统,在此基础上建立满足教学、研究和管理工作需要的软硬件环境,开发各类信息库和应用系统,为学校各类人员提供充分的网络信息服务。

系统总体设计将本着总体规划、分步实施的原则,充分体现系统的技术先进性、高度的安全可靠性,同时具有良好的开放性、可扩展性、冗余性。

本着为学校着想,合理使用建设资金,使系统经济可行。

具体包括下以几个方面:1、内网络能够高速访问FTP服务器现在或上传文件实现资源共享功能,实现对不同类型的用户划分不同的权限,限制不同类型的用户只能访问特定的服务资源。

可以下载和上传资料文件,访问速度可以对指定的用户进行级别的划分。

2、建设Web服务器对外实现信息发布,对内实现教学教务管理。

网站发布学校新闻、通知、学校的活动等相关内容。

实现学生能够在网上进行成绩查询、网上报名、网上评教等功能;以及教师的信息查询、教学数据上传等。

3、建设邮件服务器以满足校园内部之间和内、外网这间的大量邮件传输的需求。

4、实现内网划分多个VLAN,实现校园内不同校区,不同楼宇,不同楼层的多客户接入。

5、内部实现PC间实现高速互访,同时可以访问互联网。

网络内同一IP段内的PC机可以通过网上邻居实现高速互访,传送资料文件等,解决不同楼宇,不同楼层之间通过移动存储设备传送数据费时、费力的问题。

6、内部用户的QoS管理,实现用户的分级管理功能,对用户下载和上传做相应的带宽限制。

对校园网络中的流量实现有效控制,对校园内的重要数据量可靠、稳定的传输如:语音、视频会议等的延迟和阻塞的敏感。

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

计算机网络实验报告学院名称:信息科学与工程学院专业班级:姓名:学号:指导老师:模拟路由算法的实现一、实验目的本实验是计算机网络课程的实践性锻炼环节。

通过实验,帮助学生更好地掌握网络通信协议的实现技术,锻炼学生应用高级编程语言完成通信编程的能力,使学生加深对网络协议本质的理解,巩固课堂所学的理论知识。

二、实验内容1.模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。

2.实现链路状态路由算法中的最短路径算法。

三、实验原理※距离向量算法(也称为Bellman-Ford算法)则要求每个路由器发送其路由表全部或部分信息,但仅发送到邻近结点上。

从本质上来说,链路状态算法将少量更新信息发送至网络各处,而距离向量算法发送大量更新信息至邻接路由器。

——由于链路状态算法收敛更快,因此它在一定程度上比距离向量算法更不易产生路由循环。

※链路状态算法(也称最短路径算法)发送路由信息到互联网上所有的结点,然而对于每个路由器,仅发送它的路由表中描述了其自身链路状态的那一部分,其算法思想是每一个路由算法必须完成以下的工作,发现它的邻居节点,并知道其网络地址,测量到各邻居节点的延迟或者开销,构造一个分组,分组中包含所有它刚刚知道的信息,将这个分组发送给所有其他的路由器,计算出到每一个其他路由器的最短路径四、部分源程序距离向量路由算法#include "stdio.h"#include "stdlib.h"#include "conio.h"#define MAX 100typedef struct{int dis;int from;}RoutNode;RoutNode data[MAX][MAX];int InitData();void OutputRoutData(int k);void Communication(int recv, int send, int k);void Exchange(int k);void main(){int start, end, i , k;k = InitData();printf("初始化后的路由表:\n");OutputRoutData(k);for (i=0; i<k; i++){Exchange(k);}printf("\n交换路由表:\n");OutputRoutData(k);printf("输入开始路由节点(%d-%d) : ", 0, k-1);scanf("%d", &start);printf("输入结束路由节点(%d-%d) : ", 0, k-1); scanf("%d", &end);if (start==end || start<0 || start>k-1 || end<0 || end>k-1) {printf("\n输入错误,请按任意键退出.\n");getch();return;}else{int cur = start;int total = 0;if (data[start][end].dis < 0){printf("没有路由路径发现!\n");getch();return;}printf("%c->", cur+65);while (data[cur][end].from >= 0){total += data[cur][data[cur][end].from].dis;printf("%c->",data[cur][end].from+65);cur = data[cur][end].from;}total += data[cur][end].dis;printf("%c\n总的路由距离= %d", end+65, total);getch();return;}}int InitData()int num, i, j;printf("初始化路由表\n");printf("请输入路由节点的数量:\n");scanf("%d",&num);for(i=0;i<num;i++){printf("请顺序输入第%d个节点到其它节点的距离(没有路径请输入-1,到自己的距离为0):\n",i+1);for(j=0;j<num;j++){printf("Please Input:%d->%d\n",i,j);scanf("%d",&data[i][j].dis);data[i][j].from= -1;}}return num;}void OutputRoutData(int k){int i,j;printf(" ");for(i=0; i<k; i++){printf(" %c ", i+65);}printf("\n");for (i=0; i<k; i++){printf("%c ", i+65);for (j=0; j<k; j++)if (data[i][j].dis < 0)printf(" -");elseprintf(" %d", data[i][j].dis);if (data[i][j].from < 0)printf(" - ");elseprintf(" %c ", data[i][j].from+65);}printf("\n");}}void Communication(int recv, int send, int k){int i;for (i=0; i<k; i++){if (data[send][i].dis > 0){if (data[recv][i].dis < 0){data[recv][i].dis = data[send][i].dis + data[recv][send].dis;data[recv][i].from = send;}else if (data[recv][i].dis > data[send][i].dis + data[recv][send].dis) {data[recv][i].dis = data[send][i].dis + data[recv][send].dis;data[recv][i].from = send;}}}void Exchange(int k){int i,j;for (i=0; i<k; i++){for (j=0; j<k; j++){if (data[i][j].dis > 0){Communication(j,i,k);}}}}链路状态路由算法#include<iostream>#include<fstream>#include<cstdlib> //防止编译exit()时出错#include<iomanip> // 因为使用了setw()语句#include<windows.h>using namespace std;const int INFINITY=10000;const int OK=1;const int updateTime=1;void createGraph(int *arcs[],int & num){//创建并初始化网络拓扑图cout<<"请输入路径的权值(用邻接矩阵表示拓扑图的方式不可达用10000表示):"<<endl;for (int i=0;i<num;i++){arcs[i]=new int [num];for(int j=0;j<num;j++)cin>>arcs[i][j];}}void printFileGraph(int *arcs[],int num){//把拓扑图中的邻接矩阵保存到文件中ofstream outfile("Graph.txt",ios::out|ios::trunc);if(! outfile){cout<<"打开文件时出现错误!"<<endl;exit(1);}outfile<<"拓扑图的邻接矩阵"<<endl;for(int i=0;i<num;i++)for(int j=0;j<num;j++){outfile<<setw(10)<<arcs[i][j];//向Graph.txt写数据if((j+1)%num==0)outfile<<endl;}outfile<<"注:"<<endl;outfile<<INFINITY<<"表示无穷大"<<endl;cout<<"拓扑图已经存储在当前目录下Graph.txt文件中"<<endl;outfile.close();}void initRoute(int * R [],int RL[],int vNum){//路由表数据复位for(int i=0;i<vNum;i++){RL[i]=INFINITY;R[i]=new int[vNum];for(int j=0;j<vNum;j++)R[i][j]=-1;}}void updateRouteLen(int R1[], int R2[],int dest,int num){//用路径R2给R1赋值for(int i=0;i<num;i++)R1[i]=R2[i];for(int j=0;j<num;j++){if (R1[j]==-1){R1[j]=dest;break;}}}void Dijkstra(int * arcs[],int * R[],int RL[],int vexnum){//迪杰斯特拉算法int v0;bool * visit=new bool [vexnum];//已经确定最短路径的节点的集合cout<<"请输入起始节点:";cin>>v0;cout<<endl;for(int cnt=0;cnt<vexnum;cnt++){//进行主要的循环之前的初始化visit[cnt]=FALSE;RL[cnt]=arcs[v0][cnt];if(RL[cnt]<INFINITY){R[cnt][0]=v0;R[cnt][1]=cnt;}} //forRL[v0]=0;//源节点的标志visit[v0]=TRUE; //初始化已经找到最短路径的点集合for(int i=1;i<vexnum;i++){//dijkstra算法的主要循环int min=INFINITY;int v=v0;for(int j=0;j<vexnum;j++)if(!visit[j])if(RL[j]<min){v=j;min=RL[j];}visit[v]=TRUE; //离v0顶点最近的v加入到s集for(int k=0;k<vexnum;k++)//更新当前最短路径及距离if(!visit[k]&&(min+arcs[v][k]<RL[k])){//modify shortest r[j] and RL[j]RL[k]=min+arcs[v][k];updateRouteLen(R[k],R[v],k,vexnum);}}delete[] visit;visit=NULL;}//Dijkstravoid printRoute(int * R[],int RL[], int vNum){//打印得到的最短路径表ofstream outfile("Route.txt",ios::out|ios::trunc);if(! outfile){cout<<"打开文件时出现错误!"<<endl;exit(1);}for(int dest=0;dest<vNum;dest++){if(RL[dest]!=0){//判断当前的节点是不是源节点cout<<"目标节点:"<<dest<<endl;outfile<<"目标节点:"<<dest<<endl;//向Route.txt写数据if (R[dest][0]==-1){cout<<"最短路径不存在!"<<endl;outfile<<"最短路径不存在!"<<endl;//向Route.txt写数据continue;}else{cout<<"最短路径是:"<<endl;outfile<<"最短路径是:"<<endl;//向Route.txt写数据for(int j=0;j<vNum;j++){if(R[dest][j]!=-1){cout<<R[dest][j]<<(R[dest][j]==dest?"\n":"--->");outfile<<R[dest][j]<<(R[dest][j]==dest?"\n":"--->");//向Route.txt写数据}elsebreak;}}cout<<"最短路径长度:"<<RL[dest]<<endl;cout<<"*********************"<<endl;outfile<<"最短路径长度:"<<RL[dest]<<endl;//向Route.txt写数据outfile<<"*********************"<<endl;//向Route.txt写数据}}cout<<"路由表已经存储在当前目录下Route.txt文件中"<<endl;outfile.close();}//printRouteint updateGraph(int * weight[]){//由用户更新某些路径的权值char choice='t';do{ cout<<"等待路由更新"<<endl;Sleep(updateTime*1000);cout<<"是否更新路径权值:"<<endl;cout<<"t:更新f:不更新";cin>>choice;cout<<endl;if(choice=='t'){int m=0;int n=0;char isEnd='n';while(isEnd!='y'){cout<<"请输入需要更新的路径的两个端点号和更新后的权值:"<<endl;cin>>m>>n;cin>>weight[m][n];//此处的两个cin语句要分开写cout<<endl;//weight[n][m]=weight[m][n];cout<<"注意:如果是无向图,一条路径的两个方向的权值都要输入才有效!"<<endl;cout<<"是否已经完成了全部有效的更新: y:是n:否";cin>>isEnd;cout<<endl;}return OK;}}while(choice=='f');return OK;}void deleteMemo(int * weight[],int * R[], int RL[],int num){//释放所有动态什么的空间for(int i=0;i<num;i++){delete [] weight[i];weight[i]=NULL;delete [] R[i]; R[i]=NULL;}delete [] weight;weight=NULL;delete [] R;R=NULL;delete [] RL;RL=NULL;}int main(){int vNum;//拓扑图中的节点数cout<<"请输入拓扑图中节点的数目: ";cin>>vNum;cout<<endl;int ** weight=new int * [vNum];//定义拓扑图中的路径的权值int ** shortestRoute=new int * [vNum];//记录到达网络中各节点的最短路径int * routeLen=new int [vNum];//最短路径长度createGraph(weight,vNum);printFileGraph(weight,vNum);char isExit='y';bool fist=TRUE;do{if(!fist){updateGraph(weight);printFileGraph(weight,vNum);}initRoute(shortestRoute,routeLen,vNum);Dijkstra(weight,shortestRoute ,routeLen,vNum);printRoute(shortestRoute,routeLen,vNum);fist=FALSE;cout<<"是否退出程序: y:是n:否";cin>>isExit;cout<<endl;if(isExit=='y')break;}while(isExit=='n');deleteMemo(weight,shortestRoute ,routeLen,vNum);return OK;}五、程序运行截图※距离向量算法※链路状态路由算法六、实验总结为了完成这个程序,我参考了课本,互联网以及相关资料,虽然这个试验比较简单,并且不是我一人独立完成,但也花费了我大量时间。

相关文档
最新文档