计算机网络实验报告(路由算法、Socket编程)

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

计算机网络实验报告

班级:

姓名:

学号:

实验一

一.实验目的及要求

编写程序,模拟距离矢量路由算法的路由表交换过程,演示交换后的路由表的变化。

二.实验原理

距离矢量路由算法是这样工作的:每个路由器维护一张路由表(即一个矢量),它以网络中的每个路由器为索引,表中列出了当前已知的路由器到

每个目标路由器的最佳距离,以及所使用的线路。通过在邻居之间相互交换

信息,路由器不断地更新他们的内部路由表。

举例来说,假定使用延迟作为“距离”的度量标准,并且该路由器发送一个列表,其中包含了他到每一个目标路由器的延时估计值;同时,他也从

每个邻居路由器接收到一个类似的列表。假设一个路由器接收到来自邻居x

的一个列表,其中x(i)表示x估计的到达路由器i所需要的时间。如果该

路由器知道他到x的延时为m毫秒,那么他也知道在x(i)+m毫秒之间内经

过x可以到达路由器i。一个路由器针对每个邻居都执行这样的计算,就可

以发现最佳的估计值,然后在新的路由器表中使用这个最佳的估计值以及对

应的输出路线。

三.源程序:

#include "stdio.h"

#include "stdlib.h"

#include "malloc.h"

#include "graphics.h"

#include "dos.h"

#define VERNUM 7

typedef struct

{

int dis;

int flag;

int flag2;

}RoutNode;

char tmp[10];

RoutNode data[VERNUM][VERNUM];

void welcome();

void InitRoutData(FILE* pfile);

void PrintRoutData();

void SendInf(int recv, int send);

void Exchange();

int main()

{

int start, end, i, j, m, n;

FILE *pfile;

welcome();

pfile = fopen("1.txt", "r");

if (pfile == NULL)

{

printf("the file wrong,press any key to come back.\n");

getch();

return;

}

else

InitRoutData(pfile);

fclose(pfile);

printf("\nthe original route table:\n");

for (i = 0; i

{

printf("%c||", i + 65);

for (j = 0; j < VERNUM; j++)

if (data[i][j].dis > 0)

printf("<%c %d> ", j + 65, data[i][j].dis);

printf("\n");

}

PrintRoutData();

getch();

for (i = 0; i < VERNUM; i++)

{

for (m = 0; m < VERNUM; m++)

for (n = 0; n < VERNUM; n++)

data[m][n].flag = 0;

Exchange();

PrintRoutData();

getch();

}

printf("\nexchange the route table:\n");

return 0;

}

void welcome()

{

int gdriver=DETECT,gmode;

registerbgidriver(EGAVGA_driver);

initgraph( &gdriver, &gmode,"C:\Win-TC");

cleardevice();

setbkcolor(CYAN);

setviewport(0,0,639,479,1);

clearviewport();

setbkcolor(BLUE);

setcolor(14);

rectangle(200,200,440,280);

setfillstyle(1,5);

floodfill(300,240,14);

settextstyle(0,0,2);

outtextxy(50,30,"Distance Vector Routing Algorithm");

setcolor(15);

settextstyle(1,0,4);

outtextxy(260,214,"Welcome to use!");

line(0,80,640,80);

getch();

delay(300);

cleardevice();

}

void InitRoutData(FILE* pfile)

{

char num[10];

int i = 0;

char c;

int m, n;

fseek(pfile, 0, 0);

for (m = 0; !feof(pfile) && m < 7; m++)

{

for (n = 0; !feof(pfile) && n < 7; n++)

{

while (!feof(pfile))

{

c = fgetc(pfile);

if (c == ',')

{

num[i] = '\0';

data[m][n].dis = atoi(num);

data[m][n].flag = 0;

data[m][n].flag = 0;

i = 0;

相关文档
最新文档