SocketSample.java

  1. package org.drip.zen.grid;

  2. import java.io.BufferedReader;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStream;
  6. import java.io.PrintWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;

  9. /**
  10.  * 1) Review of IP Addresses, Port Number, Ping Command, Router, Gateway/Router.
  11.  * 2) Client/Server Run Through Song and Dance - Slow Detail.
  12.  * 3) Server Startup - Bind to Port. Caveats.
  13.  * 4) Client Startup, and Connection to Server.
  14.  * 5) Server Acceptance of a Connection and ready to Process it.
  15.  * 6) Client then sends Server a Message.
  16.  * 7) Server reads it, sends Client a Response.
  17.  * 8) Both Client and Server display the Message.
  18.  * 9) Passing "Client"/"Server" Arguments into the "Main".
  19.  * 10) Running this in a Command Line.
  20.  *
  21.  * @author Spooky
  22.  */

  23. public class SocketSample {

  24.     @SuppressWarnings ("resource") static void RunServer (int listenerPort)
  25.         throws Exception
  26.     {
  27.         ServerSocket mySocketListener = new ServerSocket (listenerPort);

  28.         System.out.println ("[Server] => The Server is listening on port " + listenerPort);

  29.         Socket s = mySocketListener.accept();

  30.         System.out.println ("[Server] => Received a Connection from Client " + s);

  31.         while (true) {
  32.             InputStream inputStream = s.getInputStream();

  33.             InputStreamReader inputReader = new InputStreamReader (inputStream);

  34.             BufferedReader bufferedReader = new BufferedReader (inputReader);

  35.             java.lang.String request = bufferedReader.readLine();

  36.             System.out.println ("[" + s.toString() + "] => " + request);

  37.             OutputStream outputStream = s.getOutputStream();

  38.             PrintWriter pw = new PrintWriter (outputStream, true);

  39.             String response = System.console().readLine();

  40.             pw.write (response + "\n");

  41.             pw.flush();
  42.         }
  43.     }

  44.     @SuppressWarnings ("resource") static void RunClient (String serverAddress, int serverPort)
  45.         throws Exception
  46.     {
  47.         Socket clientSocket = new Socket (serverAddress, serverPort);

  48.         System.out.println ("[Client] => The Client connected to " + serverAddress + "/" + serverPort);

  49.         boolean listenForMessages = true;

  50.         while (listenForMessages) {
  51.             OutputStream outputStream = clientSocket.getOutputStream();

  52.             String message = System.console().readLine();

  53.             PrintWriter pw = new PrintWriter (outputStream, true);

  54.             pw.write (message + "\n");

  55.             pw.flush();

  56.             InputStream inputStream = clientSocket.getInputStream();

  57.             InputStreamReader inputReader = new InputStreamReader (inputStream);

  58.             BufferedReader bufferedReader = new BufferedReader (inputReader);

  59.             java.lang.String response = bufferedReader.readLine();

  60.             System.out.println ("[" + serverAddress + ":" + serverPort + "] => " + response);

  61.             if (response.equalsIgnoreCase ("bye") || response.equalsIgnoreCase ("quit"))
  62.                 listenForMessages = false;
  63.         }
  64.     }

  65.     public static final void main (String[] inputArray)
  66.         throws Exception
  67.     {
  68.         String server = "127.0.0.1";
  69.         int listenerPort = 9090;

  70.         String command = inputArray[0];

  71.         if (command.equalsIgnoreCase ("SERVER"))
  72.             RunServer (listenerPort);

  73.         if (command.equalsIgnoreCase ("CLIENT"))
  74.             RunClient (server, listenerPort);
  75.     }
  76. }