import java.net.*;
import java.io.*;

class MultiClientEchoServer {

    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(7);
        } catch (IOException ioe) {
            System.err.println("Couldn't listen on port 7");
            System.exit(-1);
        }

        while(true) {
            try {
                Socket clientSocket = serverSocket.accept();
                EchoClientHandler handler =
                        new EchoClientHandler(clientSocket);
                (new Thread(handler)).start();
            } catch (IOException ioe) {}
        }
    }
}

class EchoClientHandler implements Runnable {
    private Socket clientSocket;
    public EchoClientHandler(Socket clientSocket) {
        this.clientSocket = clientSocket;
    }
    public void run() {
        try {
            PrintWriter out =
                    new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(clientSocket.getInputStream()));

            String input = null;
            while ((input = in.readLine()) != null) { // read from the client
                out.println(input);           // write to client
            }

            out.close();
            in.close();
            clientSocket.close();
        } catch (IOException ioe) {
            System.err.println("couldn’t communicate with client");
            System.exit(-1);
        }
    }
}
