import java.net.*;
import java.io.*;

public class TcpServer1 {
  public final static int DEFAULT_PORT = 6789;

  public static void main (String args[]) throws IOException {
    Socket client;
    if (args.length != 1)
      client = accept (DEFAULT_PORT);
    else
      client = accept (Integer.parseInt (args[0]));
    try {
      PrintWriter writer;
      BufferedReader reader;
      reader = new BufferedReader(
      	         new InputStreamReader(client.getInputStream()));
      writer = new PrintWriter(
      	         new OutputStreamWriter(client.getOutputStream()));
      writer.println ("You are now connected to the Simple Echo Server.");
      writer.flush();
      for (;;) {
// read a line
        String line = reader.readLine();
// and send back ACK
        writer.println("OK");
        writer.flush();
        System.out.println("Client says: " + line);
        if (line.equals("Server Exit")) {
          break;
        }
      }
      reader.close();
      writer.close();
    } finally {
      System.out.println ("Closing");
      client.close ();
    }
  }

  static Socket accept (int port) throws IOException {
    System.out.println ("Starting on port " + port);
    ServerSocket server = new ServerSocket (port);
    System.out.println ("Waiting");
    Socket client = server.accept ();
    System.out.println ("Accepted from " + client.getInetAddress ());
    server.close ();
    return client;
  }
}