计算机网络课设Word文档下载推荐.docx

上传人:b****2 文档编号:15005842 上传时间:2022-10-26 格式:DOCX 页数:14 大小:52.13KB
下载 相关 举报
计算机网络课设Word文档下载推荐.docx_第1页
第1页 / 共14页
计算机网络课设Word文档下载推荐.docx_第2页
第2页 / 共14页
计算机网络课设Word文档下载推荐.docx_第3页
第3页 / 共14页
计算机网络课设Word文档下载推荐.docx_第4页
第4页 / 共14页
计算机网络课设Word文档下载推荐.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

计算机网络课设Word文档下载推荐.docx

《计算机网络课设Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机网络课设Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。

计算机网络课设Word文档下载推荐.docx

编写仿真程序,对一定网络环境下MAC层的多路访问协议的分槽ALOHA协议进行实现。

通过仿真,学习协议采取的介质访问管理,包括介质分配和冲突解决机制,并对协议的性能与理论结果进行比较分析。

实验原理:

分槽Aloha的基本思想是把信道时间分成离散的时间槽,槽长为一个帧所需的发送时间。

每个站点只能在时槽开始时才允许发送。

其他过程与纯ALOHA协议相同。

分槽Aloha的信道效率比纯Aloha要高。

分槽Aloha的易受冲突区比纯Aloha小了一半。

它的重发策略是等待一段随机的时间,然后重发;

如再次冲突,则再等待一段随机的时间,直到重发成功为止,但是发送的时间也是在每个时间槽的开始。

3.实验具体设计实现及结果(含流程图及关键代码说明)

关键代码说明

a.floattime(){……},这是一个产生随机时间的函数,用于初始化各个站点产生包的时间点

b.在主函数main()函数中的while(count<

10000)函数是此程序的核心部分,此处的10000就是控制成功发送的数据包个数10000

c.for(inti=0;

i<

n;

i++)

{note[i]=0;

if(xx[i]<

c)

{

cmp=xx[i];

r=i;

}

此处的for循环是用来选出最早产生数据包的站点

d.if(temp==1)

scount++;

x[r]=x[r]+time();

else

此处的if-else函数是用来判断产生的数据包是否冲突,若冲突则执行else中的语句.

源代码:

#include<

stdio.h>

time.h>

stdlib.h>

iostream>

usingnamespacestd;

#definen2

floattime()

{

intj;

srand((unsignedint)time(NULL));

j=1+rand()%100;

floatt=(float)j/(float)100;

returnt;

}

intmain()

intscount=0,sum=0,chbag=0,c,temp,note[n],r=0;

floatx[n];

inty[n];

for(inti=0;

i++)

x[i]=time();

i<

i++)

cout<

<

x[i]<

"

"

;

endl;

while(scount<

10000)

y[i]=(int)(x[i]*10)+1;

temp=0;

c=y[0];

note[i]=0;

if(y[i]<

c=y[i];

if(y[r]==y[i])

temp++;

note[i]=y[i];

if(temp==1)

if(note[i]!

=0)

x[i]=x[i]+time();

chbag++;

floattimes=0;

if(x[i]>

times)times=x[i];

sum=scount+chbag;

Thenumberofpackageswhichsentsucessfullyis:

\n"

scount<

Thetimeofsending10000packagessucessfullyis:

times<

Duringthisperiod,thenumberofalldatapackageis:

sum<

return0;

实验结果:

4.实编程设备和环境

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

2)编程环境Windows(MSVisual系列,VC/VB/VS.Net;

)和Linux(编辑器vi+编译器GCC)均可;

5.实验总结

分槽ALOHA把使用信道的时间分成离散的时间槽,槽长为一个帧所需的发送时间,每个站点只能在时间槽开始时才允许发送,冲突主要发生在时间槽的起点,本次实验实现了分槽ALOHA成功发送10000个数据包在随机情况下所需的总时间及发送数据包的总个数,深刻体会到了分槽ALOHA相对于纯ALOHA的优势,分槽ALOHA大幅降低了冲突的可能性,信道利用率提高了约一倍。

实验二网络路由层协议模拟实验

(1)掌握VB、VC++、VS或JAVA等集成开发环境编写路由仿真程序的方法;

(2)理解并掌握距离向量路由协议和链路状态路由协议的工作原理。

1)模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。

基本要求(动态生成网络拓扑图,节点间的距离随机生成。

从初始路由表开始,进行交换路由表,演示每轮交换后的路由表的变化。

观察和讨论多少轮交换后路由表稳定)

2)实现链路状态路由算法的模拟。

每个节点生成自己的链路状态分组,依据收到的链路状态表得到整体网络结构,在得到的整体网络结构上用最短路径算法,生成每个节点的路由表)

a.两个类edgevertex分别为边和结点

b.其中有三个主要的函数构建图BuildG,

最短路径ShortestP,

以及输出look函数

c.smallestdis()这个函数是最短距离函数

intsmallestdis(intdist[],ints[])

intmin=Infinite*2;

intnode;

for(inti=0;

i<

N;

if(s[i]==0&

&

dist[i]<

min)

min=dist[i];

node=i;

returnnode;

#include<

constintN=6,Infinite=1000;

classedge

public:

intnumver;

intweight;

edge*nextedge;

edge(intnum,intw,edge*next)

numver=num;

weight=w;

nextedge=next;

};

classvertex

intdistance[N];

charby[N];

edge*firstedge;

vertex(edge*next)

firstedge=next;

intsmallestdis(intdist[],ints[])

returnnode;

intmain(intargc,char*argv[])

vertex*v[N];

intm,w;

edge*e,*e1;

charc;

voidlook(vertex*v[]);

voidBuildG(vertex*v[]);

voidShortestP(vertex*v[],intv0);

BuildG(v);

ShortestP(v,i);

look(v);

do

pleaseinputanode:

cin>

>

c;

m=c-65;

e=v[m]->

firstedge;

if(e->

weight<

Infinite)

e->

weight+=Infinite;

w=e->

numver;

e1=v[w]->

while(e1->

numver!

=m)

e1=e1->

nextedge;

e1->

e=e->

while(e!

=NULL);

else

weight-=Infinite;

while(e1->

=m)

while(c!

='

0'

);

voidShortestP(vertex*v[],intv0)

edge*e;

ints[N],u,dist,father[N],num;

s[i]=0;

father[i]=v0;

v[v0]->

distance[i]=Infinite;

v[v0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1