计网实验报告(三)(3)

2020-02-21 12:52

else{

System.out.println(\该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ACK!\

respond(lastdata); //若不是所期待的数据包则丢弃并且重发上一次的ACK

}

else{ }

System.out.println(\该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!\ lastdata=data;

respond(lastdata); //首次接收数据包并且回送ACK

}

}

void respond(int ack){

if(sender.litime.limit<20){

ack=lastdata; sender.getack(ack);

} else{

System.out.println(\计时超时!!(未丢包但是时间超过2秒)发送方准备重发序

号为\的数据分组!\

sender.switches=1; //如果超时,设置超时状态并显示警告

}

} }

【Sender.java】 import java.util.Timer; import java.util.TimerTask;

public class Sender extends Thread{

public int windowsize=3; //发送方窗口长度设为3

public String[]data={\ //模拟七个数据包 public int sign[]={0,1,2,3,4,5,6}; //为7个数据包标号 public int localack=-1; public Timers litime=null; public int switches=0;

public int windowsign[];//当前窗口内待发的数据分组的序号

public int acksign = 0; //为0表示收到正确ACK,为1表示收到错误的ACK,必须重发! public Sender(){

windowsign = new int[windowsize]; //给窗口分配指定大小的空间 for(int i=0;i<3;i++) }

public void run(){ }

public void getack(int ack){

System.out.println(\发送方收到了ACK,序号为\并且开始加以确认!\ if(ack!=localack+1){

System.out.println(\经验证,这不是发送方正期待的ACK,立刻重发序号为\的数据分组!\ acksign=1; } else{

localack=ack; //表示正确确认了ACK acksign=0; }

System.out.println(\发送方开始发送分组数据!\ windowsign[i]=sign[i]; //窗口初始化时存放前3个序号

}

public void time(){ }

【Timers.java】 import java.util.TimerTask;

public class Timers extends TimerTask { public int switches; public int limit; public void run(){ if(limit<20)

limit++;

switches=0; //标志初始化为0 litime=new Timers(); Timer limit=new Timer(); limit.schedule(litime, 0,100); }

else { } }

public Timers(){ } }

switches=0;

limit=0; //启动计时器时全部初始化

switches=-1;

this.cancel(); //开关为-1表示超时,并且停止计时器


计网实验报告(三)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电大现代金融业务作业5

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: