分槽ALOHA协议仿真实验中南大学文档格式.docx

上传人:b****1 文档编号:4945244 上传时间:2023-05-04 格式:DOCX 页数:12 大小:97.52KB
下载 相关 举报
分槽ALOHA协议仿真实验中南大学文档格式.docx_第1页
第1页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第2页
第2页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第3页
第3页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第4页
第4页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第5页
第5页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第6页
第6页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第7页
第7页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第8页
第8页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第9页
第9页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第10页
第10页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第11页
第11页 / 共12页
分槽ALOHA协议仿真实验中南大学文档格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

分槽ALOHA协议仿真实验中南大学文档格式.docx

《分槽ALOHA协议仿真实验中南大学文档格式.docx》由会员分享,可在线阅读,更多相关《分槽ALOHA协议仿真实验中南大学文档格式.docx(12页珍藏版)》请在冰点文库上搜索。

分槽ALOHA协议仿真实验中南大学文档格式.docx

Aloha是一个解决信道分配的简单而巧妙的方法。

本次实验写的是分槽aloha,就是将时间分成离散的间隔,每个数据包只能在时间槽的起点发送。

本次实验的目的是1.掌握VB、VC++、VS或JAVA等集成开发环境编写仿真程序的方法;

2.理解并掌握分槽ALOHA协议原理。

二、实验内容与实现原理

实验内容:

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

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

实验原理:

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

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

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

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

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

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

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

三、实验具体设计

代码包括六个类:

,,,,。

是主类。

主要是负责时间槽的初始化,以及多个线程的启动。

是发送站类。

里面包含了开始发送数据的时间,时间的间隔,以及成功发送完所有数据包的发送次数。

是实现了Thread接口的类。

他是Aloha的线程,run方法里面写了判断冲突的方法和数据包发送的计数方法。

每一个线程都是一个SendPot的发送过程。

也是实现了Thread接口的类。

他是一个计数器,每隔20秒加一,是用来计算现在已经到了第几个时间槽的。

关键代码说明

a、时间槽的计数,每隔20ms加一

while(true){

try{

N=N+1;

(20);

}catch(InterruptedExceptione){

();

}

}

b、发送时间以及间隔时间归并到时间槽的开始

publiclonggetStartT(){

returnstart/20+1;

}

publiclonggetDt(){

returnd/20+1;

四、实验结果

……

因实验结果过长,只选取部分内容。

五、实验设备与实验环境

Windows操作系统,JDK,使用的软件为eclipse。

六、实验总结

在本次实验的过程中,我觉得我不仅学到了关于Aloha的知识,也学到了对数据的处理以及测试程序的知识。

这次的实验让我对分槽Aloha有了更加深刻的了解,同时也更加熟练掌握了JAVA程序设计语言的运用。

七、源代码:

packageAloha;

importclassMain{

publicstaticvoidmain(String[]args){

int[]a=newint[10000];

for(inti=0;

i<

100000;

i++){

timet=newtime();

(i);

(0);

;

a[i]=0;

SendPotsp1=newSendPot

(1);

SendPotsp2=newSendPot

(2);

SendPotsp3=newSendPot(3);

SendPotsp4=newSendPot(4);

SendPotsp5=newSendPot(5);

SendPotsp6=newSendPot(6);

jsp_1j=newjsp_1();

();

AlohaThreadat1=newAlohaThread(sp1,j,a);

AlohaThreadat2=newAlohaThread(sp2,j,a);

AlohaThreadat3=newAlohaThread(sp3,j,a);

AlohaThreadat4=newAlohaThread(sp4,j,a);

AlohaThreadat5=newAlohaThread(sp5,j,a);

AlohaThreadat6=newAlohaThread(sp6,j,a);

}

importclassAlohaThreadextendsThread{

privateSendPotsp;

privateRandomr=newRandom();

privatelongtemp;

privatejsp_1j;

privateint[]a;

publicAlohaThread(SendPotsp,jsp_1j,int[]a){

=sp;

=j;

=a;

publicvoidrun(){

try{

());

}catch(InterruptedExceptione1){

();

100;

a[()]=a[()]+1;

(1);

//冲突

while(a[()]>

1){

temp=(5)+1;

(temp*20);

"

冲突"

);

"

发送成功:

第"

+()+"

号第"

+i+"

个数据包~"

}catch(Exceptione){

publicclassjsp_1extendsThread{

privateintN;

while(true){

}

publicintgetN(){

returnN;

publicclassjsqextendsThread{

privatelongt;

t=t+1;

publiclonggetT(){

returnt;

importclassSendPot{

privateintNum;

//开始发送时间

privatelongstart;

//时间间隔

privatelongd;

publicSendPot(intNum){

=Num;

start=(1000);

d=(30)+20;

publicintgetNum(){

returnNum;

publiclonggetStart(){

return(start/20+1)*20;

publiclonggetD(){

return(d/20+1)*20;

publicclasstime{

//第N个时槽

//需要发送的数目

privateintcount;

publicintgetN(){

publicvoidsetN(intn){

N=n;

publicintgetCount(){

returncount;

publicvoidsetCount(intcount){

=count;

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2