Showing posts with label Client Server Program. Show all posts
Client / Server Program With Acknowledgement
Friday, 26 June 2015
Posted by Unknown
Tag :
Client Server Program
Sender Side Program
import java.io.*;
import java.net.*;
class slidingSender
{
public void process()
{
try
{
ServerSocket server= new ServerSocket(2500);
Socket client = server.accept();
BufferedReader user=new BufferedReader(new InputStreamReader(System.in));
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter pr=new PrintWriter(client.getOutputStream(),true);
String buf[]=new String[8];
int index=0,sws=8,rws;
String ch;
do
{
System.out.println("Enter the number of frame send to the receiver:");
int nf=Integer.parseInt(user.readLine());
pr.println(nf);
if(nf<=sws-1)
{
System.out.println("Enter the "+nf+" Message send to the receiver");
for(int i=0;i<nf;i++)
{
buf[i]=user.readLine();
pr.println(buf[i]);
}
sws=sws-nf;
int ackno=Integer.parseInt(br.readLine());
System.out.println("Acknowledge Received For the Frame"+ackno);
sws=sws+nf;
}
else
{
System.out.println("SENDER WINDOW SIZE EXCEEDS");
}
System.out.println("Do You Want To Continue(y/n)");
ch=user.readLine();
pr.println(ch);
}
while(ch.equals("y"));
}
catch(Exception e){}
}
public static void main(String arg[])
{
slidingSender s= new slidingSender();
s.process();
}
}
import java.net.*;
class slidingSender
{
public void process()
{
try
{
ServerSocket server= new ServerSocket(2500);
Socket client = server.accept();
BufferedReader user=new BufferedReader(new InputStreamReader(System.in));
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter pr=new PrintWriter(client.getOutputStream(),true);
String buf[]=new String[8];
int index=0,sws=8,rws;
String ch;
do
{
System.out.println("Enter the number of frame send to the receiver:");
int nf=Integer.parseInt(user.readLine());
pr.println(nf);
if(nf<=sws-1)
{
System.out.println("Enter the "+nf+" Message send to the receiver");
for(int i=0;i<nf;i++)
{
buf[i]=user.readLine();
pr.println(buf[i]);
}
sws=sws-nf;
int ackno=Integer.parseInt(br.readLine());
System.out.println("Acknowledge Received For the Frame"+ackno);
sws=sws+nf;
}
else
{
System.out.println("SENDER WINDOW SIZE EXCEEDS");
}
System.out.println("Do You Want To Continue(y/n)");
ch=user.readLine();
pr.println(ch);
}
while(ch.equals("y"));
}
catch(Exception e){}
}
public static void main(String arg[])
{
slidingSender s= new slidingSender();
s.process();
}
}
Receiver Side Program
import java.io.*;
import java.net.*;
class slidingReceiver
{
public void process()
{
try
{
Socket client = new Socket(InetAddress.getLocalHost(),2500);
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedReader user=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pr=new PrintWriter(client.getOutputStream(),true);
int index=0,rws=8;
String buf[]=new String[8];
String ch;
while(true)
{
do
{
int nf=Integer.parseInt(br.readLine());
if(nf<rws-1)
{
for(int i=0;i<nf;i++)
{
buf[index]=br.readLine();
System.out.println(index);
System.out.println(buf[index]);
index=(index +1)%rws;
System.out.println(index);
}
rws = rws - nf;
System.out.println("Acknowledge Sent To Sender");
pr.println(index);
rws=rws+nf;
}
else
{
break;
}
ch=br.readLine();
}
while(ch.equals("y"));
}
}
catch(Exception e){}
}
public static void main(String arg[])
{
slidingReceiver r= new slidingReceiver();
r.process();
}
}
import java.net.*;
class slidingReceiver
{
public void process()
{
try
{
Socket client = new Socket(InetAddress.getLocalHost(),2500);
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedReader user=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pr=new PrintWriter(client.getOutputStream(),true);
int index=0,rws=8;
String buf[]=new String[8];
String ch;
while(true)
{
do
{
int nf=Integer.parseInt(br.readLine());
if(nf<rws-1)
{
for(int i=0;i<nf;i++)
{
buf[index]=br.readLine();
System.out.println(index);
System.out.println(buf[index]);
index=(index +1)%rws;
System.out.println(index);
}
rws = rws - nf;
System.out.println("Acknowledge Sent To Sender");
pr.println(index);
rws=rws+nf;
}
else
{
break;
}
ch=br.readLine();
}
while(ch.equals("y"));
}
}
catch(Exception e){}
}
public static void main(String arg[])
{
slidingReceiver r= new slidingReceiver();
r.process();
}
}
How to run:
- First run Sender program
- Then next run Receiver program
- Give input from Sender side
Sender Side Output:
Enter the number of frame send to the receiver:
3
Enter the 3 Message send to the receiver
hi
good
evening
Acknowledge Received For the Frame3
Do You Want To Continue(y/n)
n
3
Enter the 3 Message send to the receiver
hi
good
evening
Acknowledge Received For the Frame3
Do You Want To Continue(y/n)
n
Receiver Side Output:
0
hi
1
1
good
2
2
evening
3
Acknowledge Sent To Sender
Multicast Sender
import java.net.*;
import java.io.*;
class MulticastSender implements Runnable
{
static int port;
static MulticastSocket ms;
static String group;
static int status = 0 ;
MulticastSender() throws Exception
{
port = 5000;
group = "225.4.5.6";
ms = new MulticastSocket(4000);
}
public void run()
{
while(true)
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
byte sbuf[] = new byte[2000];
sbuf = br.readLine().getBytes();
DatagramPacket spack = new DatagramPacket(sbuf, sbuf.length,
InetAddress.getByName(group), port);
ms.send(spack);
}catch(Exception e){ System.out.println(e);}
}
}
public static void main(String args[]) throws Exception
{
MulticastSender sender = new MulticastSender();
Thread t = new Thread(sender);
ms.joinGroup(InetAddress.getByName(group));
t.start();
int count =0;
byte rbuf[] = new byte[1000];
while(true)
{
DatagramPacket rpack =new DatagramPacket(rbuf,rbuf.length);
ms.receive(rpack);
String str = new String(rpack.getData(),0,rpack.getLength());
if(str.equalsIgnoreCase("join"))
{
count++;
System.out.println("Client joined the group");
System.out.println("\ncurrently " + count + " client/clients is/are in the group");
}
else if(str.equalsIgnoreCase("leave"))
{
count--;
System.out.println("Client left the group");
System.out.println("\ncurrently " + count + " client/clients is/are in the group");
if(count == 0)
{
ms.leaveGroup(InetAddress.getByName(group));
ms.close();
break;
}
}
}
}
}
import java.io.*;
class MulticastSender implements Runnable
{
static int port;
static MulticastSocket ms;
static String group;
static int status = 0 ;
MulticastSender() throws Exception
{
port = 5000;
group = "225.4.5.6";
ms = new MulticastSocket(4000);
}
public void run()
{
while(true)
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
byte sbuf[] = new byte[2000];
sbuf = br.readLine().getBytes();
DatagramPacket spack = new DatagramPacket(sbuf, sbuf.length,
InetAddress.getByName(group), port);
ms.send(spack);
}catch(Exception e){ System.out.println(e);}
}
}
public static void main(String args[]) throws Exception
{
MulticastSender sender = new MulticastSender();
Thread t = new Thread(sender);
ms.joinGroup(InetAddress.getByName(group));
t.start();
int count =0;
byte rbuf[] = new byte[1000];
while(true)
{
DatagramPacket rpack =new DatagramPacket(rbuf,rbuf.length);
ms.receive(rpack);
String str = new String(rpack.getData(),0,rpack.getLength());
if(str.equalsIgnoreCase("join"))
{
count++;
System.out.println("Client joined the group");
System.out.println("\ncurrently " + count + " client/clients is/are in the group");
}
else if(str.equalsIgnoreCase("leave"))
{
count--;
System.out.println("Client left the group");
System.out.println("\ncurrently " + count + " client/clients is/are in the group");
if(count == 0)
{
ms.leaveGroup(InetAddress.getByName(group));
ms.close();
break;
}
}
}
}
}
Multicast Receiver
import java.io.*;
import java.net.*;
class MulticastReceiver implements Runnable
{
static MulticastSocket ms;
static int port;
static int status = 0;
MulticastReceiver() throws Exception
{
port = 5000;
ms= new MulticastSocket(port);
}
public void run()
{
while(true)
{
try
{
byte rbuf[] = new byte[2000];
DatagramPacket rpack = new DatagramPacket(rbuf,rbuf.length);
if (status == 1)
{
ms.close();
break;
}
ms.receive(rpack);
System.out.println(new String(rpack.getData(),0,rpack.getLength()));
}catch(Exception e){System.out.println(e);}
}
}
public static void main(String args[]) throws Exception
{
MulticastReceiver mr =new MulticastReceiver();
Thread t = new Thread(mr);
String group = "225.4.5.6";
System.out.println("Do you wish to join the group?");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
if(br.readLine().equalsIgnoreCase("yes"))
{
ms.joinGroup(InetAddress.getByName(group));
byte sbuf[] = new byte[2000];
sbuf = "join".getBytes();
DatagramPacket spack = new DatagramPacket(sbuf, sbuf.length,InetAddress.getByName("localhost"),4000);
ms.send(spack);
System.out.println("Joined the group");
t.start();
while(true)
{
if(br.readLine().equalsIgnoreCase("leave"))
{
status = 1;
byte sbuf2[] = new byte[2000];
sbuf2 = "leave".getBytes();
DatagramPacket spack2 = new DatagramPacket(sbuf2,sbuf2.length,InetAddress.getByName("localhost"),4000);
ms.send(spack2);
ms.leaveGroup(InetAddress.getByName(group));
break;
}
}
}
}
}
import java.net.*;
class MulticastReceiver implements Runnable
{
static MulticastSocket ms;
static int port;
static int status = 0;
MulticastReceiver() throws Exception
{
port = 5000;
ms= new MulticastSocket(port);
}
public void run()
{
while(true)
{
try
{
byte rbuf[] = new byte[2000];
DatagramPacket rpack = new DatagramPacket(rbuf,rbuf.length);
if (status == 1)
{
ms.close();
break;
}
ms.receive(rpack);
System.out.println(new String(rpack.getData(),0,rpack.getLength()));
}catch(Exception e){System.out.println(e);}
}
}
public static void main(String args[]) throws Exception
{
MulticastReceiver mr =new MulticastReceiver();
Thread t = new Thread(mr);
String group = "225.4.5.6";
System.out.println("Do you wish to join the group?");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
if(br.readLine().equalsIgnoreCase("yes"))
{
ms.joinGroup(InetAddress.getByName(group));
byte sbuf[] = new byte[2000];
sbuf = "join".getBytes();
DatagramPacket spack = new DatagramPacket(sbuf, sbuf.length,InetAddress.getByName("localhost"),4000);
ms.send(spack);
System.out.println("Joined the group");
t.start();
while(true)
{
if(br.readLine().equalsIgnoreCase("leave"))
{
status = 1;
byte sbuf2[] = new byte[2000];
sbuf2 = "leave".getBytes();
DatagramPacket spack2 = new DatagramPacket(sbuf2,sbuf2.length,InetAddress.getByName("localhost"),4000);
ms.send(spack2);
ms.leaveGroup(InetAddress.getByName(group));
break;
}
}
}
}
}
How to run:
- First run Receiver program
- Then next run Sender program in single or multiple times
- Give input "yes" from Receiver side
- Next give input in Sender side
Receiver Side Output:
Do you wish to join the group?
yes
Joined the group
hi
yes
Joined the group
hi
Sender Side Output:
Client joined the group
currently 1 client/clients is/are in the group
hi
currently 1 client/clients is/are in the group
hi
Client Side Program
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String args[]) throws Exception
{
String sentence;
String modifiedSentence;
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("127.0.0.1", 6324);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
import java.net.*;
class TCPClient {
public static void main(String args[]) throws Exception
{
String sentence;
String modifiedSentence;
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("127.0.0.1", 6324);
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
clientSocket.close();
}
}
Server Side Program
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String args[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6324);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("FROM client:" + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
import java.net.*;
class TCPServer {
public static void main(String args[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6324);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient =
new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("FROM client:" + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
How to run:
- First run server program then next run client program
- Give input from client side
- Next give input in server side
Client Side Output:
hi
FROM SERVER: HI
Server Side Output:
FROM client:hi
hi da



