All pastes #808456 Raw Edit

ReallySimpleServer

public java v1 · immutable
·published 2007-12-07 17:04 UTC
rendered paste body
import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Locale;public class SimpleServer {	static Socket client;	static BufferedReader fromClient;	static PrintWriter toClient;	/**	 * @param args	 */	public static void main(String[] args) {		String s;		while (true) {			System.out.println("");			System.out					.println("--------------------------------WAITING FOR CLIENT------------------------------");			System.out.println("");			try {				ServerSocket server = new ServerSocket(80);				client = server.accept();				System.out.println("SympleServer Connected on port 80");				fromClient = new BufferedReader(						new InputStreamReader(client.getInputStream()));				toClient = new PrintWriter(						client.getOutputStream(), true);				// s = fromClient.readLine();				// System.out.println(s);				String message = fromClient.readLine();				String host = fromClient.readLine();				if (host == null || host.equals("")						|| !host.startsWith("Host: ")) {					message("HTTP/1.1 400 Bad Request");					message("Date: "							+ displayDate(new Locale("en", "US")));					message("");					String errorMessage = getErrorMessage(400);					message(errorMessage);				} else {					String request = findRequest(message);					File f = new File(request);					if (!f.exists()) {						String errorMessage = getErrorMessage(404);						messageln("HTTP/1.1 404 Not Found");						messageln("Content-Type: text/html");						messageln("Server: JServer");						messageln("Content-Length: "+errorMessage.length());						messageln("Date: "								+ displayDate(new Locale("en", "US")));						messageln("");						messageln(errorMessage.replace("\\file", f.getName()));					} else {						messageln("HTTP/1.1 200 OK");						if(f.getName().toLowerCase().endsWith(".html") || f.getName().toLowerCase().endsWith(".htm")) {							messageln("Content-Type: text/html; charset=ISO-8859-1");						}						if(f.getName().toLowerCase().endsWith(".gif")) {							messageln("Content-Type: image/gif");						}						if(f.getName().toLowerCase().endsWith(".jpg")) {							messageln("Content-Type: image/jpg");						}						if(f.getName().toLowerCase().endsWith(".png")) {							messageln("Content-Type: image/png");						}						toClient.println("");						BufferedReader br = new BufferedReader(new FileReader(f));						char read;						while((read = (char)br.read()) != -1 && read != 65535)						{							message(read);						}											}				}				toClient.close();				server.close();				client.close();			} catch (IOException e) {				e.printStackTrace();			}			System.out.println("");			System.out					.println("--------------------------------CLOSED CONNECTION-------------------------------");			System.out.println("");		}	}	private static String findRequest(String message) {		String[] s = message.split(" ");		return s[1].substring(1);	}	static public String displayDate(Locale currentLocale) {		Date today;		String result;		SimpleDateFormat formatter;		formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z",				currentLocale);		today = new Date();		result = formatter.format(today);		// System.out.println("Locale: " + currentLocale.toString());		return (result);	}	public static String getErrorMessage(int messageNum) {		String message = "";		File err = new File(messageNum + ".html");		try {			FileReader fr = new FileReader(err);			BufferedReader br = new BufferedReader(fr);			String s;			while ((s = br.readLine()) != null) {				message += s + "\n";			}		} catch (FileNotFoundException e) {			e.printStackTrace();		} catch (IOException i) {		}		return message;	}	public static void message(String message) {		toClient.print(message);		System.out.print(message);	}	public static void message(char message) {		message(message +"");	}	public static void messageln(String message) {		message(message + "\n");	}}