diff --git a/WebServer.java b/WebServer.java index 202f6bc..2e06fb4 100644 --- a/WebServer.java +++ b/WebServer.java @@ -13,32 +13,32 @@ public final class WebServer { public static void main(String argv[]) throws Exception { - // Set port number - int port = 0; + // Set port number + int port = 0; - // Establish the listening socket - ServerSocket serverSocket = new ServerSocket(port); - System.out.println("Port number is: "+serverSocket.getLocalPort()); + // Establish the listening socket + ServerSocket serverSocket = new ServerSocket(port); + System.out.println("Port number is: "+serverSocket.getLocalPort()); - // Wait for and process HTTP service requests - while (true) { - // Wait for TCP connection - Socket requestSocket = serverSocket.accept(); - requestSocket.setSoLinger(true, 5); + // Wait for and process HTTP service requests + while (true) { + // Wait for TCP connection + Socket requestSocket = serverSocket.accept(); + requestSocket.setSoLinger(true, 5); - // Create an object to handle the request - HttpRequest request = new HttpRequest(requestSocket); + // Create an object to handle the request + HttpRequest request = new HttpRequest(requestSocket); - //request.run() + //request.run() - // Create a new thread for the request - Thread thread = new Thread(request); + // Create a new thread for the request + Thread thread = new Thread(request); - // Start the thread - thread.start(); + // Start the thread + thread.start(); + } } - } } final class HttpRequest implements Runnable @@ -47,9 +47,9 @@ final class HttpRequest implements Runnable // Recognized HTTP methods final static class HTTP_METHOD { - final static String GET = "GET"; - final static String HEAD = "HEAD"; - final static String POST = "POST"; + final static String GET = "GET"; + final static String HEAD = "HEAD"; + final static String POST = "POST"; } final static String HTTPVERSION = "HTTP/1.0"; @@ -59,68 +59,81 @@ final class HttpRequest implements Runnable // Constructor public HttpRequest(Socket socket) throws Exception { - this.socket = socket; + this.socket = socket; } // Implements the run() method of the Runnable interface public void run() { - try { - processRequest(); - } catch (Exception e) { - System.out.println(e); - } + try { + processRequest(); + } catch (Exception e) { + System.out.println(e); + } } // Process a HTTP request private void processRequest() throws Exception { // Get the input and output streams of the socket. - InputStream ins = socket.getInputStream(); - DataOutputStream outs = new DataOutputStream(socket.getOutputStream()); + InputStream ins = socket.getInputStream(); + DataOutputStream outs = new DataOutputStream(socket.getOutputStream()); - // Set up input stream filters - BufferedReader br = new BufferedReader(new InputStreamReader(ins)); + // Set up input stream filters + BufferedReader br = new BufferedReader(new InputStreamReader(ins)); - // Get the request line of the HTTP request - String requestLine = br.readLine(); + // Get the request line of the HTTP request + String requestLine = br.readLine(); - // Display the request line - System.out.println(); - System.out.println("Request:"); - System.out.println(" " + requestLine); - - // Close streams and sockets - outs.close(); - br.close(); - socket.close(); + // Display the request line + System.out.println(); + System.out.println("Request:"); + System.out.println(" " + requestLine); + + String[] tokens = requestLine.split(" "); + // for(String token : tokens) + // System.out.println("---> " + token); + sendResponse(tokens[1],outs); + + + // Close streams and sockets + outs.close(); + br.close(); + socket.close(); } + private void sendResponse(String f,DataOutputStream outs) + throws Exception{ + String response = HTTPVERSION+" 200 OK "+CRLF+"kottedala"+CRLF; + outs.writeChars(response); + sendBytes(new FileInputStream(f),outs); + + } private static void sendBytes(FileInputStream fins, - OutputStream outs) throws Exception + OutputStream outs) throws Exception { - // Coopy buffer - byte[] buffer = new byte[1024]; - int bytes = 0; + // Coopy buffer + byte[] buffer = new byte[1024]; + int bytes = 0; - while ((bytes = fins.read(buffer)) != -1) { - outs.write(buffer, 0, bytes); - } + while ((bytes = fins.read(buffer)) != -1) { + outs.write(buffer, 0, bytes); + } } private static String contentType(String fileName) { - if (fileName.toLowerCase().endsWith(".htm") || - fileName.toLowerCase().endsWith(".html")) { - return "text/html"; - } else if (fileName.toLowerCase().endsWith(".gif")) { - return "image/gif"; - } else if (fileName.toLowerCase().endsWith(".jpg")) { - return "image/jpeg"; - } else { - return "application/octet-stream"; - } + if (fileName.toLowerCase().endsWith(".htm") || + fileName.toLowerCase().endsWith(".html")) { + return "text/html"; + } else if (fileName.toLowerCase().endsWith(".gif")) { + return "image/gif"; + } else if (fileName.toLowerCase().endsWith(".jpg")) { + return "image/jpeg"; + } else { + return "application/octet-stream"; + } } }