版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机网络课程设计报告题目:模拟Enthernet帧的发送过程问题描述(把你所选的题目及要求说一下)本次课程设计的目的是模拟Enthernet帧的发送过程,我们采用线程代替计算机,利用带有冲突检测的CSMA/CD协议进行信道侦听,采用截断的二进制指数退避算法解决信道冲突问题。概要设计(抽象数据类型定义)程序开始发送帧时,首先要检测信道是否空闲,如果不空闲就继续检测,如果空闲就看信道上是否发生冲突,如果发生冲突,数据帧就结束发送,冲突加强,冲突次数加一,如果冲突次数大于16就丢弃这个帧,不大于16就推迟一定时间继续检测信道的忙闲,准备发送。intbus()函数,用于随机模拟实际信道是否空闲;返回1表示空闲;intcollision()函数,用于模拟信道冲突是否发生;返回1表示发生冲突;重写线程的run()函数,用于实现功能逻辑;intcount用于累计发生冲突的次数,以便应用CSMA/CD规则——连续16冲突则发送失败。详细设计(主要算法和函数间的调用关系)分析Enthernet帧的发送过程:载波侦听过程。Enthernet利用信道发送数据,信道是每个帧共享的公共传输介质。所以每个帧在发送数据之前,总是先侦听信道是否空闲。若信道空闲,就可以启动发送,否则继续侦听。冲突检测。当侦听到信道空闲时,可能有多个线程同时发送数据。所以在发送数据的过程中,也应该进行冲突检测,一旦发现冲突,就立即停止发送数据。随后延迟重发。在检测到冲突后,立即停止发送帧,然后等待一段随机时间(随机时间的取值为在2倍的争用期乘以rand%(2^k-1),其中k=min(重传次数,10))再重新发送。若发送16次还没有成功,则说明帧发送失败。主要函数:intcollision();intbus();voidrun();函数调用:在voidrun()函数中调用intbus()函数和intcollision()函数。核心代码: publicintcollision(){ //随机判断是否发生冲突 intisCollision=(int)(Math.random()*(10+1));//冲突是否发生 if(isCollision%2==0){ System.out.println("检测到冲突!"); return1; }else{ System.out.println("没有检测到冲突!"); return0; } } publicintbus(){ //随机判断是否发生阻塞 intxindao=(int)(Math.random()*(10+1)); //信道是否空闲(0~10之间的随机数,2的倍数是信道忙) if(xindao%2==0){ System.out.println("信道忙!"); return0; }else{ System.out.println("信道空闲!"); return1; } } publicvoidrun() { intcount=0;//重传次数 System.out.println("线程--数据帧已经封装完成!--开始侦听信道---\n"); for(inti=0;i<5;i++) { if(bus()==1)//判断信道空闲 { System.out.println("可以发送数据帧"); while(collision()==1)//信道冲突 { System.out.println("信道冲突"); count++; doublestayTime=2*N*(int)(Math.random()*(1+(Math.pow(2,count>10?10:count))-1)); System.out.println("数据帧发送停止!!\n"); if(count<=10)//前十次的推迟时间显示出来,10之后,推迟时间和第十次一样 { System.out.println("线程------第"+count+"次重传"); System.out.println("线程------推迟发送时间为:"+stayTime); } if(count>=16) { System.out.println("线程------发送失败!!!\n"); } break; } System.out.println("数据帧发送成功\n"); } else//信道忙 { System.out.println("信道忙,继续侦听\n"); } } }四、调试分析(调式过程中出现的问题及如何改正)在判断信道是否忙闲和信道是否冲突时,生成用0~10之间的随机数,对2求余,等0是分别表示:信道忙和冲突当信道冲突时,对推迟随机时间后发送,这里面的随机时间求取遇到麻烦,最后通过查资料想到用stayTime=2*N*Math.random()*((1+Math.pow(2,count>10?10:count))-1);心得体会(组内成员的分工及实习期间的体会)组内成员的分工:冯菲:主要程序的撰写,编写文档等魏沙沙:思路的提供,辅助程序撰写,编写文档等赵孟龙:思路的提供,辅助程序撰写,编写文档等随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在,因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。经过一个星期对计算机网络课程设计的学习和上机实际操作,我熟悉了模拟Ethernet帧的发送过程及数据发送流程;更好的理解了冲突产生、发送失败原因及如何解决此类问题,学到了在课本上没有学到的知识与道理。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,提高自己的实际动手能力和独立思考的能力。在该设计过程中我遇到了许多的问题,让我发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。只有经过不断的努力才能为以后的生活工作打下良好的基础。六、用户手册(系统的使用方法介绍)《JAVA程序设计》《计算机网络》详细代码:publicclassSendZhenextendsThread{ finaldoubleN=0.005; publicintcollisionCount=16;//允许的最大发送次数 publicintcollision(){ //随机判断是否发生冲突 intisCollision=(int)(Math.random()*(10+1)); //冲突是否发生 if(isCollision%2==0){ System.out.println("检测到冲突!"); return1; }else{ System.out.println("没有检测到冲突!"); return0; } } publicintbus(){ //随机判断是否发生阻塞 intxindao=(int)(Math.random()*(10+1)); //信道是否空闲(0~10之间的随机数,2的倍数是信道忙) if(xindao%2==0){ System.out.println("信道忙!"); return0; }else{ System.out.println("信道空闲!"); return1; } } publicvoidrun() { intcount=0;//重传次数 System.out.println("线程--数据帧已经封装完成!--开始侦听信道---\n"); for(inti=0;i<5;i++) { if(bus()==1)//判断信道空闲 { System.out.println("可以发送数据帧"); while(collision()==1)//信道冲突 { System.out.println("信道冲突"); count++; doublestayTime=2*N*(int)(Math.random()*(1+(Math.pow(2,count>10?10:count))-1)); System.out.println("数据帧发送停止!!\n"); if(count<=10)//前十次的推迟时间显示出来,10之后,推迟时间和第十次一样 { System.out.println("线程------第"+count+"次重传"); System.out.println("线程------推迟发送时间为:"+stayTime); } if(count>=16) { System.out.println("线程------发送失败!!!\n"); } break; } System.out.println("数据帧发送成功\n"); } else//信道忙 { System.out.println("信道忙,继续侦听\n"); } } } publics
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省泰安市大津口中学2026届中考联考物理试题含解析
- 广西壮族自治区南宁市天桃实验校2026届中考五模物理试题含解析
- 产科护理中的沟通技巧
- 2026届重庆市巴川中学中考试题猜想物理试卷含解析
- 中专护理急救护理学课件
- 常德市临澧县2025-2026学年四下数学期末达标检测模拟试题(含答案)
- 2026年河北省衡水市故城县中考物理适应性模拟试题含解析
- 巴楚县2025届四年级数学下学期期中考试试题(含解析)
- 金属摆件工专项考试复习题库(附答案)
- 天津市双菱中学2025-2026学年高二年级下学期5月期中考试数学试卷(含答案)
- 制造业企业数字化转型成熟度评估规范编制说明
- 四川省消防安全管理条例解读
- 工业和信息化领域数据安全合规指引
- 分析文章线索辨别明线暗线-2026年中考语文记叙文阅读专项高分突破(解析版)
- DB61∕T 1724-2023 考古工地安全施工规范
- 2025至2030中国清酒行业发展分析及市场发展趋势分析与未来投资战略咨询研究报告
- 数据资产评估体系构建与财务应用研究
- 【MOOC】《用Python玩转数据》(南京大学)期末考试慕课答案
- 国开(福建)2025年《幼儿园社会教育专题》形考作业1-3答案
- 广东省佛山市南海区、三水区2023-2024学年五年级下学期期末数学试卷(含答案)
- 《防腐蚀碳砖标准》
评论
0/150
提交评论