Wednesday, February 23, 2011

Socket Programming in Java


// SERVER SIDE

import java.io.*;
import java.net.*;

public class myserver
{
    public static void main(String args[])
    {
        try
        {
            // Creating a server side socket.
            // TCP Port 8765
            // Data being sent throught this port.

            ServerSocket ss = new ServerSocket(8765);
           
            Socket incoming = ss.accept();

            BufferedReader br = new BufferedReader (new InputStreamReader(incoming.getInputStream()));
            BufferedReader lin = new BufferedReader (new InputStreamReader(System.in));
            PrintWriter out = new PrintWriter(incoming.getOutputStream(),true);

            System.out.println("Server : Enter BYE to exit");
            out.println("Enter BYE to exit");

            boolean more = true;
            while(more)
            {
                String line = br.readLine();
                if(line == null)
                    more = false;
                else
                {
                    if(line.trim().equals("BYE"))
                        more = false;
                    line = "Client:" + line    ;
                    System.out.print(line + "\nServer:");
                    line = lin.readLine();
                    out.println("Server:"+line);
                }
            }
            incoming.close();
        }
        catch(Exception e)
        {
        }
    }
}       




// CLIENT SIDE

import java.io.*;
import java.net.*;

public class myclient
{
    public static void main(String args[])
    {
        try
        {
            int character;

            // Creating Client Socket, to transmit/receive Data from client side

            Socket socket = new Socket("127.0.0.1",8765);

            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            BufferedReader lin = new BufferedReader(new InputStreamReader(System.in));
            PrintWriter out = new PrintWriter(socket.getOutputStream(),true);

            boolean more = true;
            String line = br.readLine();
            System.out.println(line);
            while(more)
            {
                System.out.print("\nClient:");
                line =     lin.readLine();
                if(line.trim().equals("BYE"))
                    more = false;
                else
                {
                    out.println(line);
                    line = br.readLine();
                    System.out.println(line);
                }
            }

        }
        catch(Exception e)
        {}
    }
}

Interpocess Communication In Java

/*
    Message Class synchronizing the messages between PrintHow n PrintHello classes,
    using Synchronized Methods.
           
*/

class Message
{
 boolean f=false;

 synchronized void How()
 {
  if(!f)
  {
   try
   {
    wait();
   }
   catch(Exception e)
   {}

   System.out.println("How");
   f=false;
   notify();
  }
 }

 synchronized void Hello()
 {
  if(f)
  {
   try
   {
    wait();
   }
   catch(Exception e)
   {}

   System.out.println("Hello");
   f=true;
   notify();
  }     
 }

}

class printhow extends Thread
{
 Message m;
 printhow(Message msg)
 {
  m = msg;
  start();
 }

 public void run()
 {
  while(true)
   m.How();
 }
}

class printhello extends Thread
{
 Message m;
 printhello(Message msg)
 {
  m=msg;
  start();
 }

 public void run()
 {
  while(true)
   m.Hello();
 }
}

class Interprocess
{
 public static void main(String arg[])
 {
  Message m=new Message(); 
  printhello po = new printhello(m);
  printhow ph = new printhow(m);
 }
}