计算机网络实验报告(2)

2018-12-04 21:58

for (j=0; j < N; j++) printf(\ printf(\ }

printf(\}

void print(int k) //打印函数 { int i, j;

printf(\次交换: \ for (i = 0; i < N; i++)

printf(\\dist[k][i], (char)(path[i]+65)); //显示到其他结点的距离并且输出邻居结点 printf(\}

void exchange(int v) {

int i, k, m;

for (i = 0; i < N; i++) //显示第一次交换结果 {

dist[1][i] = map[v][i]; if (i != v && dist[1][i] < MAX) path[i] = i; else

path[i] = -20;

}

print(1);

for (k = 2; k < N; k++) {

for (m = 0; m < N; m++) dist[k][m] = dist[k-1][m]; for (m = 0; m < N; m++) if (m != v)

for (i = 0; i < N; i++) //修改更新路由表

if (map[i][m] < MAX && dist[k-1][m] > dist[k-1][i] + map[i][m]) {

if (dist[k-1][i] + map[i][m] < dist[k][m]) {

dist[k][m] = dist[k-1][i] + map[i][m]; if (map[v][i] < MAX) path[m] = i; else

path[m] = path[i]; } } for (m = 0; m < N; m++) if (path[m] == v) path[m] = m; print(k); } } int main() { int i; init();

for (i = 0; i < N; i++) {

char c;

c=(char)(i+65);

printf(\路由器的路由表\\n\ exchange(i);

printf(\ }

getchar(); }

六、实验总结

程序先定义了一个路由表,路由表结点的权值和弧数可随机生成。路由表的初始信息存储在文件中,程序运行是先调用函数从文件中读取路由表的初始信息,然后输出初始路由表的信息,print()函数主要是向邻近节点发送自己的路由表信息,exchange()函数则根据新路由表信息更新自己的路由表。当所有的路由表节点都更新一遍后,整个路由表更新完毕。

七、实验心得

经过此次试验,对两种不的路由协议有了深入的理解。距离矢量路由算法及链路状态路由算法两者的区别在于,距离矢量路由算法是静态的,链路状态路由算法是动态的。我选择的是距离矢量路由算法,该算法的基本思想如下:每个路由器维护一个距离矢量(通常是以延时是作变量的)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。每一次都要相应地更改路由器的路由表,从而找到到达周边节点的最短路径。

实验二、Socket通信实验

一、实验内容

1.网络编程是通过使用套接字来达到进程间通信目的的编程,Socket编程是网络编程的主流工具,Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制,提供了访问下层通信协议的大量系统调用和相应的数据结构。本实验利用Socket API编写网络通信程序,具体实验要求及内容如下。

2.所编写的程序应具有如下功能:

具有点对点通信功能,任意客户端之间能够发送消息; 具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员不能收到;

具有广播功能,客户端能够向所有其他成员广播消息;

二、实验目的及要求

实验目的:

1.掌握VB、VC++、VS或JAVA等集成开发环境编写网络程序方法; 2.掌握客户/服务器(C/S)应用的工作方式; 3.学习网络中进程之间通信的原理和实现方法; 4.理解单播、组播和广播的原理并比较其不同之处; 5.要求本机既是客户端又是服务器端; 编程语言及环境:

1.编程语言C/C++/C#/Java等均可;


计算机网络实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国咸菜行业发展研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: