/*************************************************
 * Copyright (C) 2003, CCNY
 * @Author: Jinzhong Niu
 * @Date: Sun Feb 22 22:39:12 EST 2004
 *************************************************/

import java.net.*;
import java.io.*;
import java.util.*;

public class EchoHttpServer {
	public static void main(String args[]) {
		
		try{
			ServerSocket serverSocket = new ServerSocket(PORT);
			Socket socket = null;
			BufferedReader reader = null;
			PrintWriter writer = null;
			String request = null;
			String response = null;
			String line = null;
			
			
			while ((socket=serverSocket.accept()) != null) {
				reader = new BufferedReader(
					new InputStreamReader(socket.getInputStream()));
				writer = new PrintWriter(socket.getOutputStream());
				
				request = "";
				
				while (true) {
					line = reader.readLine();
					request += line + EOL;
					if (line.length() == 0) {
						break;
					}
				}
				
				System.out.println("### Request received from "
					+ socket.getInetAddress());
				System.out.println(request);
				
				String html = "<html>\n"
					+ "<b>Here's what we got from the client at "
					+ new Date()
					+ ":</b>\n"
					+ "<pre>\n"	+ request + "</pre>"
					+ "</html>";
				
				response = "HTTP/1.0 200 OK" + EOL
					+ "Content-type: text/html" + EOL
					+ "Server: blablabla" + EOL
					+ "Content-Length: " + html.length() + EOL
					+ "Connection: close" + EOL
					+ "" + EOL
					+ html;
				writer.print(response);
				writer.flush();
				
				System.out.println("Response: \n"+response);

				reader.close();
				writer.close();
				socket.close();				
			}
		} catch(IOException ex) {
			ex.printStackTrace();
			System.exit(1);
		}
		
		System.exit(0);
	}

	static String EOL = "\015\012";
	static int PORT = 8181;
	
}

