Socket Server and Socket Client on the same machine

This program is helpful in the implementation where we want a machine works as a client for other machines and same machine
works as a server for other machines. This technique for example useful in ring topology, star topology program implementation 
in networking

package DemoSocket;

import java.io.*;

import java.net.*;

import java.util.Scanner;

class ServerThread extends Thread // Server Program
{

   ServerThread()
   {
      this.start();
   }

   public void run()
   {
      try
      {
          ServerSocket serv=new ServerSocket(8084);
          Socket client=serv.accept();
          ObjectInputStream in=new ObjectInputStream(client.getInputStream());
          String request=in.readObject().toString();
          char arr[]=request.toCharArray(),tmp;

          int len=request.length();
          int i=0,j=len-1;

          while(i<j)
          { 
             tmp=arr[i];
             arr[i]=arr[j];
             arr[j]=tmp;
             i++;
             j--;
          } 

          String response=new String(arr);
          ObjectOutputStream out=new ObjectOutputStream(client.getOutputStream());
          out.writeObject(response);
      }
      catch(Exception ex)
      {
          ex.printStackTrace();
          System.out.println("ServerSide Error :"+ex);
      }

   }
}


class ClientThread extends Thread // Client Program
{

    ClientThread()
    {
       this.start();
    }

    public void run()
    {
      try
      {
         Scanner sc=new Scanner(System.in);
         System.out.print("Enter any string :");
         String input=sc.next();
         InetAddress inet=InetAddress.getByName("127.0.0.1");
         Socket client=new Socket(inet,8084);

         ObjectOutputStream out=new ObjectOutputStream(client.getOutputStream());
         out.writeObject(input);
         ObjectInputStream in=new ObjectInputStream(client.getInputStream());

         String rev=in.readObject().toString();
         System.out.println("Reverse of the String :"+rev);
     }
     catch(Exception ex)
     {
         System.out.println("ClientSide Error :"+ex);
     }
    }
}

public class SameCS // Main Program
{
   public static void main(String args[])
   {
     new ServerThread();
     new ClientThread();
   }
}


No comments: