/*
  
  Client.java

  Simple socket-based client server application. The server echoes
  back what the client sends which is what the user types in.

  Usage: java Client <port_number=8072>
  Disconnect by typing BYE

  This file implements the client part

  (P)2000 Dana & Laurentiu Cristofor

*/

import java.io.*;
import java.net.*;

public class Client
{
  public static void main(String[] args)
  {
    int port = 8072;

    if (args.length > 0)
      port = Integer.parseInt(args[0]);
      
    try
      {
	System.out.print("Trying to connect to server on port " + port + " ...");
	Socket socket = new Socket(InetAddress.getLocalHost(), port);
	ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
	ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
	System.out.println(" connected!");

	// get greeting from server
	System.out.print((String)in.readObject());
	// get user name from stdin
	BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
	String msg = read.readLine();
	// send user name to server
	out.writeObject(msg);

	while (true)
	  {
	    // print prompt
	    System.out.print("> ");
	    // get user input
	    msg = read.readLine();
	    // send it to server
	    out.writeObject(msg);
	    // get answer from sever and display it
	    System.out.println((String)in.readObject());
	    // we exit with BYE
	    if (msg.equals("BYE"))
	      break;
	  }

      }
    catch (Exception e)
      {
	System.out.println("Client error: " + e);
      }
  }
}
