// File:  Sockets\SimpleServer.java

// Simple server - echoes whatever the client sends

import java.io.*;
import java.net.*;

public class SimpleServer {

    // Choose a port outside of the range 1-1024:
    public static final int PORT = 8080;

    public static void main(String[ ] args) throws IOException {
        System.out.println("SERVER");
        System.out.println();
        ServerSocket s = new ServerSocket(PORT);
        System.out.println("Started: " + s);
        try {
            // Blocks until a connection occurs:
            Socket socket = s.accept();
            try {
                System.out.println(
                    "Connection accepted: "+ socket);
                BufferedReader in =
                    new BufferedReader(
                        new InputStreamReader(
                            socket.getInputStream()));
                // Output is flushed by PrintWriter:
                PrintWriter out =
                    new PrintWriter(
                        new BufferedWriter(
                            new OutputStreamWriter(
                                socket.getOutputStream())), true);
                while (true) {
                    String str = in.readLine();
                    System.out.println("Echoing: " + str);
                    out.println(str);
                    if (str.equals("END"))
                        break;
                }
            // Always close the two sockets...
            } finally {
                System.out.println("Closing...");
                socket.close();
            }
        } finally {
            s.close();
        }
        System.out.println();
        System.out.println("* END SERVER *");
    }
}

