⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stopwait.java

📁 本程序是用java编写的一些关于arq协议实现的小程序
💻 JAVA
字号:
import datalink.*;public class Stopwait    extends Protocol{    Packet buffer;      // to store outstanding packet in case of time out    int frameToSend;    // sequence number to sue for current packet    int frameExpected;  // sequence number expected    double timer;       // time out value    boolean waiting;    // indicates that a packet is waiting to be sent    public Stopwait( int windowsize, double timer)    {	super( windowsize, timer);	frameToSend = 0;	frameExpected = 0;	waiting = false;	this.timer = timer;    }    public void FrameArrival( Object frame)    {	DLL_Frame f = (DLL_Frame) frame;	/* a frame has arrived from the physical layer */	/* check that it is the one that is expected */	if (f.sequence == frameExpected)	    {		sendPacket(f.info);	// valid frame		                       // is returned to network layer */		frameExpected = 1-frameExpected; // flip bit	    }	if( f.acknowledgement == frameToSend) /* acknowledgment has arrived */	    {		stopTimer(0);            /* cancel timer */		enableNetworkLayer();   /* allow new packets */		frameToSend = 1-frameToSend;	    }    }    public void PacketArrival( Packet p)    {	DLL_Frame f;	buffer = p;	if ( isChannelIdle() )	    {		f = new DLL_Frame( frameToSend, 1-frameExpected, buffer);		sendFrame( f);        // send it to physical layer		startTimer(0, timer); // start timer		waiting = false;	    }	else	    waiting = true;	disableNetworkLayer();    }    public void TimeOut( int code)    {	DLL_Frame f;	if ( isChannelIdle())	    {		/* a frame has not been ACKed in time, */		/* so re-send the outstanding frame */		f = new DLL_Frame( frameToSend, 1-frameExpected, buffer);		sendFrame( f);		startTimer(0, timer);	    }	else	    waiting = true;    }    public void CheckSumError()    {  // ignore check sum errors and allow frames to time out    }    public void ChannelIdle()    {	DLL_Frame f;	if ( waiting )	    {		f = new DLL_Frame( frameToSend, 1-frameExpected, buffer);		sendFrame( f);		startTimer(0, timer);		waiting = false;	    }    }}class DLL_Frame {    Packet info;    int sequence;    int acknowledgement;    DLL_Frame ( int s, int a, Packet p)    {	info = p;	sequence = s;	acknowledgement = a;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -