Program To Implement Sliding Window Protocol
Program To Implement Sliding Window Protocol
Pseudo Code
#include<iostream>
int main()
{
int w,i,f,frames[50];
for(i=1;i<=f;i++)
cin>>frames[i];
for(i=1;i<=f;i++)
{
if(i%w==0)
{
cout<<frames[i]<<"\n";
cout<<"Acknowledgement of above frames sent is received by sender\n\n";
}
else
cout<<frames[i]<<" ";
}
if(f%w!=0)
cout<<"\nAcknowledgement of above frames sent is received by sender\n";
return 0;
}
Algorithm - Sender’s side
begin
do
if ( Event(Request_For_Transfer)) then
doNothing();
end if;
Get_Data_From_Network_Layer();
s = Make_Frame();
s.seq = SeqN;
Store_Copy_Frame(s);
Send_Frame(s);
Start_Timer(s);
SeqN = SeqN + 1;
end if;
if ( Event(Frame_Arrival) then
r = Receive_Acknowledgement();
Retransmit( s.seq(NAK_No));
Start_Timer(s);
end if
Remove_Frame(s.seq(SeqFirst));
Stop_Timer(s);
SeqFirst = SeqFirst + 1;
end if
end if
if ( Event(Time_Out)) then
Start_Timer(s);
Retransmit_Frame(s);
end if
end
Algorithm – Receiver Side
Begin
frame f;
NAKsent = false;
ACK = false;
Mark(slot)=false;
do
if ( Event(Frame_Arrival) then
Receive_Frame_From_Physical_Layer();
SendNAK(f.SeqNo);
NAKsent = true;
end if
SendNAK(f.SeqNo);
NAKsent = true;
Store_frame(f.SeqNo);
Mark(RSeqNo) = true;
end if
end if
else
while ( Mark(RSeqNo))
Extract_Data(RSeqNo);
Deliver_Data_To_Network_Layer();
RSeqNo = RSeqNo + 1;
Send_ACK(RSeqNo);
end while
end if
end if
end while
end