文档详情

冲突退避算法的实现

大米
实名认证
店铺
DOCX
60.84KB
约7页
文档ID:509397301
冲突退避算法的实现_第1页
1/7

上海大学2009〜2010学年冬季学期研究生课程考试实验报告课程名称: 计算机通信网络技术 课程编号: 002000709 报告题目: 实验二冲突退避算法的实现 研究生姓名: 陈志强 学号:09720832论文评语:成绩:任课教师:评阅日期:冲突退避算法的实现 实验报告1•实验内容在CSMA/CD协议中,一旦检测到冲突,为降低再冲突的概率,需要等待一个随机时间, 然后再使用CSMA方法试图传输为了保证这种退避维持稳定,采用了二进制指数退避算 法的技术编程来实现二进制指数退避算法2. 实验环境硬件环境:PC微机软件环境:Windows xp Microsoft Visual C++ 6.03. 实验步骤(1)实验原理二进制指数退避算法过程如下:1. 将冲突发生后的时间划分为长度为2t的时隙2. 发生第一次冲突后,各个站点等待0或1个时隙在开始重传3. 发生第二次冲突后,各个站点随机地选择等待0,1,2或3个时隙在开始重传4. 第i次冲突后,在0至2的i次方减一间随机地选择一个等待的时隙数,在开始重传5. 10次冲突后,选择等待的时隙数固定在0至1023(2的10次方减一)间6. 16次冲突后,发送失败,报告上层。

⑵实验流程图根据退避算法的过程,可以写出退避算法的流程图图下(图一)所示000000000000000000000000000000000000000000「发送帧J延迟随机时间 (发送失败)碰撞次数N++发送Jam图一(3)实验程序段根据退避算法的原理和流程图,编写模拟退避算法的实验程序如下:int main(){int n=0;string str;int m;coutvv"人工模拟冲突检测:是否检测到站点冲突(YES/NO)?"vve ndl;while (cin>>str){if(str[O] =='N'||str[O] == 'n'){coutvv"没有检测到站点之间冲 突,正常发送!"vvendl;return 0;}else if(str[O] == 'Y' || str[O] == 'y'){n++;if(n>0 && n v= 10){m = pow(2, n);sra nd(( un sig ned)time(NULL));cout vv"检测到第"vvnvv"次冲突,随机等 待:"vvrand() % m *51.2vv"毫秒后重发!" vve ndl;cout vve ndl;coutvv"人工模拟冲突检测:是否检测到站 点冲突(YES/NO)?"vve ndl;else if(n>10 && n v =16){cout vv"检测到第"vvnvv"次冲突,等 待一个固定时间:"vv1023*51.2vv"毫秒后 重发!" vvendl;cout vve ndl;coutvv"人工模拟冲突检测:是否检测 到站点冲突(YES/NO)?"vve ndl;}else if(n>16){coutvv"硬件故障,强制退出!!!"vvendl; return 0;}}else{coutvv"请输入正确字符!"vve ndl;cout vve ndl;coutvv"人工模拟冲突检测:是否检测 到站点冲突(YES/NO)?"vve ndl;}}return 0;}4.实验结果a运行程序点击红色“感叹号”运行程序,如下图一所示。

图一b弹出如下窗口,接收输入字符(Y/N如(图二)所示,当输入Y时代表检测到站点1次冲 突,随机等待一个延长重新发送如(图三)所示当输入N时,代表站点没有冲突,正常 发送如(图四)所示当一直冲突下去,至到 16次冲突时,会出现“硬件故障,强制退出” 提示如(图五)所示图三图四图五5.小结本实验成功的实现了冲突退避算法的实验要求,通过软件模拟了冲突退避算法的原理功 能,但是本实验仅仅是在模拟的基础上验证了冲突退避算法,但是本实验还存在着缺点,没 有完全的模拟,比如在冲突后,随机时间的选取在以后的学习和研究中,仍需改进。

下载提示
相似文档
正为您匹配相似的精品文档