//*************************************** // HTTP Server // inspired by simple server from http://pont.net/socket/java // server implements HTTP GET method //*************************************** import java.net.*; import java.io.*; import java.util.*; import java.lang.*; public class httpServer { public static void main(String args[]) { int port; ServerSocket server_socket; try { port = Integer.parseInt(args[0]); } catch (Exception e) { port = 1500; } try { server_socket = new ServerSocket(port); System.out.println("httpServer running on port " + server_socket.getLocalPort()); // server infinite loop while(true) { Socket socket = server_socket.accept(); System.out.println("New connection accepted " + socket.getInetAddress() + ":" + socket.getPort()); // Construct handler to process the HTTP request message. try { httpRequestHandler request = new httpRequestHandler(socket); // Create a new thread to process the request. Thread thread = new Thread(request); // Start the thread. thread.start(); } catch(Exception e) { System.out.println(e); } } } catch (IOException e) { System.out.println(e); } } } class httpRequestHandler implements Runnable { final static String CRLF = "\r\n"; Socket socket; InputStream input; OutputStream output; BufferedReader br; // Constructor public httpRequestHandler(Socket socket) throws Exception { this.socket = socket; this.input = socket.getInputStream(); this.output = socket.getOutputStream(); this.br = new BufferedReader(new InputStreamReader(socket.getInputStream())); } // Implement the run() method of the Runnable interface. public void run() { try { processRequest(); } catch(Exception e) { System.out.println(e); } } private void processRequest() throws Exception { while(true) { String headerLine = br.readLine(); System.out.println(headerLine); if(headerLine.equals(CRLF) || headerLine.equals("")) break; StringTokenizer s = new StringTokenizer(headerLine); String temp = s.nextToken(); if(temp.equals("GET")) { String fileName = s.nextToken(); fileName = "." + fileName ; // Open the requested file. FileInputStream fis = null ; boolean fileExists = true ; try { fis = new FileInputStream( fileName ) ; } catch ( FileNotFoundException e ) { fileExists = false ; } // Construct the response message. String serverLine = "Server: fpont simple java httpServer"; String statusLine = null; String contentTypeLine = null; String entityBody = null; String contentLengthLine = "error"; if ( fileExists ) { statusLine = "HTTP/1.0 200 OK" + CRLF ; contentTypeLine = "Content-type: " + contentType( fileName ) + CRLF ; contentLengthLine = "Content-Length: " + (new Integer(fis.available())).toString() + CRLF; } else { statusLine = "HTTP/1.0 404 Not Found" + CRLF ; contentTypeLine = "text/html" ; entityBody = "" + "