Tuesday, November 3, 2015

Filled Under:

Java program to implement sliding window protocol

Share
Sender (slidsender.java)
import java.net.*;
import java.io.*;
import java.rmi.*;
public class slidsender
{
public static void main(String args[]) throws Exception
{
ServerSocket ser=new ServerSocket(10);
Socket s=ser.accept();
DataInputStream in=new DataInputStream(System.in);
DataInputStream in1=new DataInputStream(s.getInputStream());
String sbuff[]=new String[8];
PrintStream p;
int sptr=0,sws=8,nf,ano,i;
String ch;
do
{
p=new PrintStream(s.getOutputStream());
System.out.println("Enter the number of frames: ");
nf=Integer.parseInt(in.readLine());
p.println(nf);
if(nf<=sws-1)
{
System.out.println("Enter the "+nf+" messages to be send\n");
for(i=1;i<=nf;i++)
{
sbuff[sptr]=in.readLine();
p.println(sbuff[sptr]);
sptr=++sptr%8;
}
sws=-nf;
System.out.println("Acknowledgement received");
ano=Integer.parseInt(in1.readLine());
System.out.println("for "+ano+" frames");
sws+=nf;
}
else
{
System.out.println("The number of frames exceeds window size");
break;
}
System.out.println("\nDo you want to send some more frames?\n");
ch=in.readLine();
p.println(ch);
}
while(ch.equals("yes"));
s.close();
}
}

Receiver (slidreceiver.java)
import java.net.*;
import java.io.*;
class slidreceiver
{
public static void main(String args[]) throws Exception
{
Socket s=new Socket(InetAddress.getLocalHost(),10);
DataInputStream in=new DataInputStream(s.getInputStream());
PrintStream p=new PrintStream(s.getOutputStream());
int i=0,rptr=-1,rws=8;
String rbuff=new String[8];   
String ch;
System.out.println();
do
{
n=Integer.parseInt(in.readLine());
if(n<rws-1)
{
for(i=1;i<=n;i++)
{
rptr=++rptr%8;
rbuff[rptr]=in.readLine();
System.out.println("The received frame "+rptr+" is "+rbuff[rptr]);
}
rws-=n;
System.out.println("\nAcknowledgement sent\n");
p.print(rptr+1);
rws+=n;
}
else
break;
ch=in.readLine();
}
while(ch.equals("yes"));
}
}

1 comments: