网络原理实验报告(GBN).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络原理实验报告(GBN)

网络原理实验报告——编程模拟GBN姓名: 班级:学号:教师: 实验目的运用各种编程语言实现基于Go-Back-N的可靠数据传输软件。PS:这里使用的是JAVA语言实验意义通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。实验背景Go-Back-N的有限状态机模型表示如下图所示: (a)(b)图为Go-Back-N的有限状态机模型(a)发送端 (b)接受端实验步骤选择合适的编程语言编程实现基于Go-Back-N的可靠数据传输软件。在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。实验环境实验语言:JAVA实验平台:Eclipse引用库函数:.net库、随机(Random)库、计时库(Timer)类概览与描述Sender类:继承于Thread(线程)类,模拟发送方的 一切功能,主要功能函数有:Public void run()——启动函数,标识开始发送数据包Sender()——构造函数,分配并初始化窗口值Public void getack(in tack)——ACK接收函数,接收接收方返回的ACK并进行验证是否为期待的ACK值(若不是,则重发)Public void time()——定时器函数,初始化定时,计时并记录超时与否的状态Receiver类:继承于Thread(线程)类,模拟接收方的一切功能,主要功能函数有:Public void run()——启动函数,标识开始等待并接收数据包Void Receive(int data,Sender s)——数据包接收函数,功能强大!主要包括:接收数据包,验证数据包,判断与丢弃数据包等Public void respond(int ack)——ACK发送函数,发送当前接收到的最后一次正确的数据包对应的ACKTimers类:继承于TimerTask(计时器)类,具有自定义定时与超时提醒的功能,主要功能函数有:Public void run()——启动函数,标识开始计时(这里预设的是2秒的时间),超时后提醒并且停止计时器Public Timers()——构造函数,清0计时器,等待下一次启动GBN类:继承于Thread(线程)类,是主函数类,具有本程序的核心功能,这里先作一部分简单介绍,主要函数功能有:Static void senddelay(int x) throws InterruptedExceptionPublic Timers()——随机延迟函数,模拟数据包发送传输过程中的随机延迟,常用延迟值分别为:300ms, 750ms, 1200ms, 3000ms等Public static void main(String[] args) throws IOException, InterruptedException()——主函数,功能强大,主要包含以下几大方面:开启发送端与接收端(包括计时器)超时或者ACK不匹配等情况导致的发送方 重新发送数据包(第一次)发送当前窗口内的数据包随机函数模拟数据包发送过程中的丢包情况实时更新与显示当前窗口内的数据包情况统计每一个数据包被发送过的次数(含重发)并最终显示出来代码展示与描述Sender类import java.util.Timer;public class Sender extends Thread{public int windowsize=3;//发送方窗口长度设为3public String[] data={data1,data2,data3,data4,data5,data6,data7};//模拟七个数据包public int sign[]={0,1,2,3,4,5,6};//为7个数据包标号public int localack=-1;//保存最近收到的ACKpublic Timers litime=null;//定时器(这里定为2秒)public int switches=0;//超时标志,1为超时public int windowsign[]; //当前窗口内待发的数据分组的序号public int acksign=0; //为0表示收到正确ACK,为1表示收到错误的ACK,必须重发!public Sender(){windowsign=new int[windowsize];//给窗口分配指定大小的空间 for(int i=0;i3;i++)windowsign[i]=sign[i]; //窗口初始化时存放前3个序号}public void run(){System.out.println(发送方开始发送分组数据!);}public void getack(int ack){System.out.println(发送方收到了ACK,序号为+ack+并且开始加以确认!);if(

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档