0% found this document useful (0 votes)
247 views

Implementing Stop & Wait Protocol AIM To Implement The Stop and Wait Protocol Using Java Programming Language. Procedure Sender

The document describes implementing a stop and wait protocol using Java. It outlines the procedures for the sender and receiver. The sender sends packets in sequence, sets a timer, and resends if it doesn't receive an acknowledgment. The receiver passes packets to higher layers if the sequence number is correct and sends acknowledgments. Code is provided for the sender and receiver classes with methods to send, receive, and acknowledge packets between a client and server. The output shows packets being successfully sent and received between the two.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
247 views

Implementing Stop & Wait Protocol AIM To Implement The Stop and Wait Protocol Using Java Programming Language. Procedure Sender

The document describes implementing a stop and wait protocol using Java. It outlines the procedures for the sender and receiver. The sender sends packets in sequence, sets a timer, and resends if it doesn't receive an acknowledgment. The receiver passes packets to higher layers if the sequence number is correct and sends acknowledgments. Code is provided for the sender and receiver classes with methods to send, receive, and acknowledge packets between a client and server. The output shows packets being successfully sent and received between the two.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

IMPLEMENTING STOP & WAIT PROTOCOL

AIM
            To implement the stop and wait protocol using java programming language.

PROCEDURE
Sender
Step1: sequence -> 0
Step2: Accept new packet and assign sequence to it.
Step3: Send packet sequence with sequence number sequence.
Step4: Set timer for recently sent packets.
Step5:   If error free acknowledgment from receiver and NextFrameExpected -> sequence  then sequence
-> NextFrameExpected.
Step6:  If time out then go to step3.
Step7:  Stop.
Receiver
Step1:  Start.
Step2:  NextFrameExpected -> 0, repeat steps 3 forever.
Step3:  If error-free frame received and sequence= NextFrameExpected, then pass packet to higher layer and
NextFrameExpected -> NextFrameExpected+1(modulo 2).
Step4:  Stop.

CODE

Sender.java
import java.io.*;
import java.net.*;
public class Sender
{
Socket sender;
ObjectOutputStream out;
ObjectInputStream in;
String packet,ack,str, msg;
int n,i=0,sequence=0;
Sender(){}
public void run()
{
  try
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Waiting for Connection....");
sender = new Socket("localhost",2005);
sequence=0;
out=new ObjectOutputStream(sender.getOutputStream());
out.flush();
in=new ObjectInputStream(sender.getInputStream());
str=(String)in.readObject();
System.out.println("reciver     > "+str);
System.out.println("Enter the data to send....");
packet=br.readLine();
n=packet.length();
do
{
try
{
if(i<n)
{
msg=String.valueOf(sequence);
msg=msg.concat(packet.substring(i,i+1));
}
else if(i==n)
{
msg="end";out.writeObject(msg);
break;
}
out.writeObject(msg);
sequence=(sequence==0)?1:0;
out.flush();
System.out.println("data sent>"+msg);
ack=(String)in.readObject();
System.out.println("waiting for ack.....\n\n");
if(ack.equals(String.valueOf(sequence)))
{
i++;
System.out.println("receiver   >  "+" packet recieved\n\n");
}
else
{    
System.out.println("Time out resending data....\n\n");
sequence=(sequence==0)?1:0;
}
}catch(Exception e){}
}while(i<n+1);
System.out.println("All data sent. exiting.");
}catch(Exception e){}
finally
{
try
{
in.close();
out.close();
sender.close();
}
catch(Exception e){}
}
}
public static void main(String args[])
{
Sender s=new Sender();
s.run();
}
}

Receiver.java
import java.io.*;
import java.net.*;
public class Receiver
{
ServerSocket reciever;
Socket connection=null;
ObjectOutputStream out;
ObjectInputStream in;
String packet,ack,data="";
int i=0,sequence=0;
Receiver(){}
public void run()
{
try
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
reciever = new ServerSocket(2005,10);
System.out.println("waiting for connection...");
connection=reciever.accept();
sequence=0;
System.out.println("Connection established   :");
out=new ObjectOutputStream(connection.getOutputStream());
out.flush();
in=new ObjectInputStream(connection.getInputStream());
out.writeObject("connected    .");
do
{
try
{
packet=(String)in.readObject();
if(Integer.valueOf(packet.substring(0,1))==sequence)
{
data+=packet.substring(1);
sequence=(sequence==0)?1:0;
System.out.println("\n\nreceiver         >"+packet);
}
else
{
System.out.println("\n\nreceiver         >"+packet +"   duplicate data");
}
if(i<3)
{
out.writeObject(String.valueOf(sequence));i++;
}
else
{
out.writeObject(String.valueOf((sequence+1)%2));
i=0;
}
}
catch(Exception e){}
}while(!packet.equals("end"));
System.out.println("Data recived="+data);
out.writeObject("connection ended    .");
}
catch(Exception e){}
finally
{
try
{
in.close();
out.close();
reciever.close();
}
catch(Exception e){}
}
}
public static void main(String args[])
{
Receiver s=new Receiver();
while(true)
{
s.run();
}
}
}

OUTPUT:

//SENDER OUTPUT
Waiting for Connection....
reciver > connected .
Enter the data to send....
myname
data sent>0m
waiting for ack.....
receiver > packet recieved
data sent>1y
waiting for ack.....
receiver > packet recieved
data sent>0n
waiting for ack.....
receiver > packet recieved
data sent>1a
waiting for ack.....
Time out resending data....
data sent>1a
waiting for ack.....
receiver > packet recieved
data sent>0m
waiting for ack.....
receiver > packet recieved
data sent>1e
waiting for ack.....
receiver > packet recieved
All data sent. exiting.

//RECEIVER OUTPUT
waiting for connection...
Connection established :
receiver >0m
receiver >1y
receiver >0n
receiver >1a
receiver >1a duplicate data
receiver >0m
receiver >1e
Data recived=myname
waiting for connection...

RESULT:

Thus the program is executed successfully and the output is verified.

You might also like