编程实现可靠数据传输原理GO-BAN-N实验报告.docxVIP

  • 247
  • 0
  • 约5.4千字
  • 约 8页
  • 2019-03-17 发布于湖北
  • 举报

编程实现可靠数据传输原理GO-BAN-N实验报告.docx

编程实现可靠数据传输原理GO-BACK-N实验 姓名:吴杰 学号 班级:计科1306 实验目的 运用各种变成语言实现基于Go-Back-N的可靠数据传输软件 实验意义 通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。 实验步骤 利用java编程实现基于Go-Back-N的可靠数据传输软件。 运行程序,程序将模拟实际网络中的可靠数据传输 结果分析 通过本次实验,了解了GBN传输协议的相关知识。实验代码通过查阅资料很容易理 解,但是怎么实现这个程序对我来说是个问题。 附件 JAVA语言代码 Sender类 package GBN; import java.util.Timer; public class Sender extends Thread{ public int windowsize=3; //发送方窗口长度设为3 public String[] data={data1,data2,data3, data4,data5,data6,data7}; //模拟七个数据包 public int sign[]={0,1,2,3,4,5,6}; //为7个数据包标号 public int localack=-1; //保存最近收到的ACK public 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(ack!=localack+1){ System.out.println(经验证,这不是发送方正期待的ACK,立刻重发序号为+(localack+1)+的数据分组!); acksign=1; } else{ localack=ack; //表示正确确认了ACK acksign=0; } } public void time(){ switches=0; //标志初始化为0 litime=new Timers(); Timer limit=new Timer(); limit.schedule(litime, 0,100); } } Receiver类 package GBN; public class Receiver extends Thread{ public int lastdata; public Sender sender; public void run(Sender s){ sender=s; System.out.println(接收方开始接收分组数据!); } void receive(int data, Sender s){ sender=s; //发送方的参数传递 System.out.println(接收方收到了序号为+data+的分组!); if(data!=0){ if(data==lastdata+1){ //数据包序号校验,若连续则是正确/所期待的 System.out.println(该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!); lastdata=data; //更新本地保存的数据包序号变量 respond(lastdata); //回送该正确接收的数据包对应的ACK } else{ System.out.println(该数据分组不是

文档评论(0)

1亿VIP精品文档

相关文档