You are on page 1of 28

Name:- Prajapati Movan

Roll no:- 3204


Div :- B
Dcn(p) ass4
1. Write a java program to perform the implementation of Simplex Protocol.

Server:
import java.io.*;
import java.net.*;

public class Q1_server


{
public static void main(String args[]) throws Exception
{
ServerSocket ss = new ServerSocket(9999);
int count = 0;

System.out.println("Server Started");
while(true)
{
count++;
Socket s = ss.accept();
System.out.println("Client Number : " + count + "started");
ServerClientThread sct = new ServerClientThread(s,count);
sct.start();
}
}
}
class ServerClientThread extends Thread
{
Socket sc;
int counter;
int cnt=0;

ServerClientThread(Socket s,int count)


{
sc=s;
counter=count;
}

public void run()


{
int num=-1;
try
{
while(num!=0)
{
BufferedReader br = new BufferedReader(new
InputStreamReader(sc.getInputStream()));
String str = br.readLine();
String data[] = str.trim().split(" ");
int length = Integer.parseInt(data[1].trim());
int first=Integer.parseInt(data[0].trim());
if(data[1].trim().equalsIgnoreCase("0"))
{
System.out.println("Client" + counter + " has left");
break;
}
else if(data[0].trim().equalsIgnoreCase(data[1].trim())){}
else
{
cnt++;
System.out.println("Received Frame : " +
data[0].trim());
}
}

}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}

Client:
import java.io.*;
import java.net.*;
import java.util.*;

public class Q1_client


{
public static void main(String args[]) throws Exception
{
int i = 0;
int length=-1;

Socket s = new Socket("localhost",9999);


Scanner sc = new Scanner(System.in);
while(length!=0)
{
System.out.print("Enter frame number and 0 to exit");
length = sc.nextInt();

for(i=0;i<length;i++)
{
String str = i+" "+length;
Thread.sleep(500);
OutputStreamWriter os = new
OutputStreamWriter(s.getOutputStream());
PrintWriter out = new PrintWriter(os);
out.println(str);
out.flush();
System.out.println("Sending Frame : " + i);
}
if(i==length)
{
String str1 = i+" "+length;
OutputStreamWriter os1 = new
OutputStreamWriter(s.getOutputStream());
PrintWriter out1 = new PrintWriter(os1);
out1.println(str1);
out1.flush();
}
}
}
}
Output:
2. Write a java program to perform the implementation of Stop & Wait Protocol.

Server:
import java.io.*;
import java.net.*;
class Q2_server
{
public static void main(String args[])throws Exception
{
Q2_server swr = new Q2_server();
swr.run();
}
public void run() throws Exception
{
String temp = "any message",str="exit";
System.out.println("Server Started..");
ServerSocket myss = new ServerSocket(9999);
Socket ss_accept = myss.accept();

BufferedReader ss_bf= new BufferedReader(new


InputStreamReader(ss_accept.getInputStream()));

PrintStream myps= new PrintStream(ss_accept.getOutputStream());


while(temp.compareTo(str)!=0)
{
temp=ss_bf.readLine();
if(temp.compareTo(str)==0)
{
break;
}
System.out.println("Frame"+temp+" was received");
myps.println("received");
}
System.out.println("all Frames received successfully");
}
}

Client:
import java.io.*;
import java.net.*;
import java.util.Scanner;
class Q2_client
{
public static void main(String args[]) throws Exception
{
Q2_client sws = new Q2_client();
sws.run();
}
public void run() throws Exception
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter no of frames to be sent:");
int n=sc.nextInt();
Socket myskt = new Socket("localhost",9999);
PrintStream myps= new PrintStream(myskt.getOutputStream());
for(int i=0;i<=n;)
{
if(i==n)
{
myps.println("exit");
break;
}
System.out.println("Frame no "+i+" is sent");
myps.println(i);

BufferedReader bf= new BufferedReader(new


InputStreamReader(myskt.getInputStream()));

String ack = bf.readLine();


if(ack!= null)
{
System.out.println("Acknowledgement was Received from
receiver ");
i++;

}
else
{
myps.println(i);
}
}
}
}
Output:
3. Write a java program to perform the implementation of Stop & Wait ARQ
Protocol.

Server:
import java.io.*;
import java.net.*;

public class Q3_server


{

ServerSocket Receiver;
Socket connection=null;
ObjectOutputStream out;
ObjectInputStream in;

String packet,ack,data="";
int i=0,sequence=0;

Q3_server(){}

public void run()


{

try
{

BufferedReader br=new BufferedReader(new


InputStreamReader(System.in));
Receiver = new ServerSocket(9999,10);
System.out.println("waiting for connection...");
connection=Receiver.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();
System.out.println("Packet::"+packet); //01

System.out.println("sequence ::"+sequence); //0

if(Integer.valueOf(packet.substring(0,1))==sequence) //0==0
{
data+=packet.substring(1);
System.out.println("data ::"+data); //
sequence=(sequence==0)?1:0;

System.out.println("sequence ::"+sequence);
System.out.println("\n\nreceiver
>"+packet);

}
else
{
System.out.println("\n\nreceiver
>"+packet +" duplicate data");
}
if(i<3)
{

System.out.println(String.valueOf(sequence));

out.writeObject(String.valueOf(sequence));i++;
}
else
{

String.valueOf(String.valueOf((sequence+1)%2));

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();
Receiver.close();

}
catch(Exception e){}

}
}
public static void main(String args[])
{
Q3_server s=new Q3_server();
while(true)
{
s.run();
}

}
}

Client:
import java.io.*;
import java.net.*;
public class Q3_client
{

Socket sender;
ObjectOutputStream out;
ObjectInputStream in;
String packet,ack,str, msg;
int n,i=0,sequence=0;

Q3_client(){}
public void run()
{
try
{
BufferedReader br=new BufferedReader(new
InputStreamReader(System.in));
System.out.println("Waiting for Connection....");
sender = new Socket("localhost",9999);
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();
//5
System.out.println("Packet::"+packet);
n=packet.length();
System.out.println("N::"+n);
//2
do
{

try
{

if(i<n)
//0<5
{

msg=String.valueOf(sequence);

System.out.println("Before Substring
msg::"+msg); //0

msg=msg.concat(packet.substring(i,i+1));
System.out.println("After Substring
msg::"+msg); //01

}
else if(i==n)
{
msg="end";out.writeObject(msg);
break;
}
out.writeObject(msg);
sequence=(sequence==0)?1:0;

System.out.println("sequence::"+sequence); //1
out.flush();

System.out.println("data sent>"+msg);
//01

ack=(String)in.readObject();
System.out.println("ack::"+ack); //1

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[])
{

Q3_client s=new Q3_client();


s.run();

}
Output:
4. Write a java program to perform the implementation of Go Back N ARQ
Protocol.

Server:
import java.net.*;
import java.util.*;
import java.io.*;
class Q4_server
{
public static void main(String[] args) throws Exception
{
ServerSocket ss=new ServerSocket(9999);
int count=0;

while(true)
{
try{

count++;
Socket s=ss.accept();
System.out.println("Client: "+count);
simple cs=new simple(s,count);
cs.start();

}
catch(Exception e)
{
System.out.println(e);
}
}
}
}
class simple extends Thread
{
int count;
Socket s;
simple(Socket ss,int count)
{
this.s=ss;
this.count=count;
}
public void run()
{
while(true)
{
try{

BufferedReader br=new BufferedReader(new


InputStreamReader(s.getInputStream()));
String str=br.readLine();
int m=Integer.parseInt(str);

if(m==0)
{
String msg="All Frame's received By Receiver ";
System.out.println("Client "+count+" Exit!");
System.out.println("All Frame's Received.");
PrintWriter pw=new PrintWriter(s.getOutputStream());
pw.println(msg);
pw.flush();
break;

}
else
{
if(m<0)
{
String msg="Frame "+m+" Acknowledgement
Received ";
//System.out.println(m+" Frame Received. ");
Thread.sleep(1000);
PrintWriter pw=new
PrintWriter(s.getOutputStream());
pw.println(msg);
pw.flush();
}
else
{

String msg="Frame "+m+" Acknowledgement


Received ";
//System.out.println(m+" Frame Received. ");
Thread.sleep(1000);
PrintWriter pw=new
PrintWriter(s.getOutputStream());
pw.println(msg);
pw.flush();
}
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
}

Client:
import java.util.*;
import java.io.*;
import java.net.*;

class Q4_client
{
public static void main(String[] args) throws Exception
{
Scanner se=new Scanner(System.in);

Socket s=new Socket("localhost",9999);


System.out.println("Frame to send ?");
int str=se.nextInt();
int flag=0,f=0;
str++;
System.out.println("Lost?");
int lost=se.nextInt();
for(int i=1;i<=str;i++)
{
if(f==1)
{
/*System.out.println("Inside F con.");
OutputStreamWriter ow=new
OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new PrintWriter(ow);
pw.println(0);
pw.flush();
BufferedReader br=new BufferedReader(new
InputStreamReader(s.getInputStream()));
String msg=br.readLine();
System.out.println(msg);*/
break;
}
if(i==str)
{
//System.out.println("Inside i==str ");
OutputStreamWriter ow=new
OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new PrintWriter(ow);
pw.println(0);
pw.flush();
BufferedReader br=new BufferedReader(new
InputStreamReader(s.getInputStream()));
String msg=br.readLine();
System.out.println(msg);
break;
}
else if(flag==0)
{
if(i==lost)
{
OutputStreamWriter ow=new
OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new PrintWriter(ow);
pw.println(-1);
pw.flush();
flag=lost;
BufferedReader br=new BufferedReader(new
InputStreamReader(s.getInputStream()));
String msg=br.readLine();
//System.out.println(msg);
continue;

}
else
{
OutputStreamWriter ow=new
OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new PrintWriter(ow);
System.out.println("Frame "+i+" sent");
pw.println(i);
pw.flush();
BufferedReader br=new BufferedReader(new
InputStreamReader(s.getInputStream()));
String msg=br.readLine();
System.out.println(msg);
}

}
if(flag>0)
{
//System.out.println("Inside Flag If..");
f=1;
//System.out.println("Flag Is "+flag);
for(int j=flag;j<=str;j++)
{
if(j==str)
{
OutputStreamWriter ow=new
OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new PrintWriter(ow);
pw.println(0);
pw.flush();
BufferedReader br=new
BufferedReader(new InputStreamReader(s.getInputStream()));
String msg=br.readLine();
System.out.println(msg);
break;
}
else
{

OutputStreamWriter ow=new
OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new
PrintWriter(ow);
System.out.println("Frame "+j+"
Resending..");
pw.println(j);
pw.flush();
BufferedReader br=new
BufferedReader(new InputStreamReader(s.getInputStream()));
String msg=br.readLine();
System.out.println(msg);
}
}
}
else
{
continue;
}

}
}
Output:
5. Write a java program to perform the implementation of Selective Repeat
Protocol.

Sever:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

public class Q5_server


{
static ServerSocket Serversocket;
static DataInputStream dis;
static DataOutputStream dos;

public static void main(String[] args) throws SocketException


{

try
{
int a[] = { 30, 40, 50, 60, 70, 80, 90, 100 };
Serversocket = new ServerSocket(9999);
System.out.println("waiting for connection");
Socket client = Serversocket.accept();
dis = new DataInputStream(client.getInputStream());
dos = new DataOutputStream(client.getOutputStream());
System.out.println("The number of packets sent is:" + a.length);
int y = a.length;
dos.write(y);
dos.flush();

for (int i = 0; i < a.length; i++)


{
dos.write(a[i]);
dos.flush();
}

int k = dis.read();

dos.write(a[k]);
dos.flush();

}
catch (IOException e)
{
System.out.println(e);
}
finally
{
try
{
dis.close();
dos.close();
}
catch (IOException e)
{
e.printStackTrace();
}

}
}
}

Client:
import java.lang.System;
import java.net.*;
import java.io.*;
import java.text.*;
import java.util.Random;
import java.util.*;

public class Q5_client


{
static Socket connection;

public static void main(String a[]) throws SocketException {


try {
int v[] = new int[10];
int n = 0;
Random rands = new Random();
int rand = 0;

InetAddress addr = InetAddress.getByName("Localhost");


System.out.println(addr);
connection = new Socket(addr, 9999);
DataOutputStream out = new DataOutputStream(
connection.getOutputStream());
DataInputStream in = new DataInputStream(
connection.getInputStream());
int p = in.read();
System.out.println("No of frame is:" + p);

for (int i = 0; i < p; i++) {


v[i] = in.read();
System.out.println(v[i]);
//g[i] = v[i];
}
rand = rands.nextInt(p);//FRAME NO. IS RANDOMLY GENERATED

v[rand] = -1;
for (int i = 0; i < p; i++)
{
System.out.println("Received frame is: " + v[i]);

}
for (int i = 0; i < p; i++)
if (v[i] == -1) {
System.out.println("Request to retransmit from packet
no "
+ (i+1) + " again!!");
n = i;
out.write(n);
out.flush();
}
System.out.println();

v[n] = in.read();
System.out.println("Received frame is: " + v[n]);

System.out.println("quiting");
} catch (Exception e) {
System.out.println(e);
}

}
}
Output:

You might also like