Wednesday, 1 August 2012

Bidirectional Datatransfer Using Threads

Aim
Write a program to perform bi directional data transfer using Threads .
Progrram

  thserver.java
import java.io.*;
import java.net.*;
public class thserver implements Runnable
{
Thread t1=null,t2=null;
BufferedReader in,br;
PrintWriter pw;
Socket s;
ServerSocket ser;

public thserver()
{
    try
    {
    int port=8002;
    ser=new ServerSocket(port);
    }

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

public void run()
{
String msg;
if(Thread.currentThread()==t1)
{
    try
    {
    s=ser.accept();
    br=new BufferedReader(new InputStreamReader(s.getInputStream()));
   
    do
    {
    System.out.println("Enter a message");
    msg=br.readLine();
    System.out.println("Client:"+msg);
    }while(!msg.equals("Quit"));
    System.exit(0);
    }
catch(Exception e)
{
System.out.println("Error running program");
}
}

else
{
    try
    {
    in=new BufferedReader(new InputStreamReader(System.in));
    do
    {
    msg=in.readLine();
    pw=new PrintWriter(s.getOutputStream(),true);
    pw.println(msg);
    }while(!msg.equals("Quit"));
    System.exit(0);
    }
    catch(Exception e)
    {
    System.out.println("Error running program");
    }
}
}

public static void main(String args[])

{
thserver ss=new thserver();
System.out.println("Sever started");
ss.t1=new Thread(ss);
ss.t2=new Thread(ss);
ss.t1.start();
ss.t2.start();
}
}



-----------------------------------------------------------------------------------------------------------
thclient.java

//client side
import java.io.*;
import java.net.*;
public class thclient implements Runnable
{
Thread t1=null,t2=null;
BufferedReader in,br;
PrintWriter pw;
Socket s;
public thclient()
{
try
{
int port=8002;
InetAddress add=InetAddress.getLocalHost();
s=new Socket(add,port);
}
catch(Exception e)
{
System.out.println("Error running program");
}
}

public void run()
{
String msg;
if(Thread.currentThread()==t2)
{
try
{
br=new BufferedReader(new InputStreamReader(s.getInputStream()));
do
{
System.out.println("Enter a msg:");
msg=br.readLine();
System.out.println("server:"+msg);
}while(!msg.equals("Quit"));
System.exit(0);
}
catch(Exception e)
{
System.out.println("Error running program");
}
}
else
{
try
{
in=new BufferedReader(new InputStreamReader(System.in));
do
{
msg=in.readLine();
pw=new PrintWriter(s.getOutputStream(),true);
pw.println(msg);
}while(!msg.equals("Quit"));
System.exit(0);
}
catch(Exception e)
{
System.out.println("Error running program");
}
}
}

public static void main(String args[])
{
thclient c=new thclient();
System.out.println("Client started....");
c.t1=new Thread(c);
c.t2=new Thread(c);
c.t1.start();
c.t2.start();
}
}

No comments:

Post a Comment