Kamis, 23 Januari 2014

Latihan Java Web Server

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class WebServer {
    public static void main(String[] args) {
        try {
            ServerSocket serversocket = new ServerSocket(80);
            System.out.println("OK!\n");
            //go in a infinite loop, wait for connections, process
request, send response
            while (true) {
                System.out.println("\nReady, Waiting for requests...\n");

                Socket connectionsocket = serversocket.accept();
                InetAddress client = connectionsocket.
getInetAddress();
                System.out.println(client.getHostName() + " connected
to server.\n");

                BufferedReader input =
                        new BufferedReader(
                                new
InputStreamReader(connectionsocket.getInputStream()));
                String httpRequest = input.readLine(); //read from the stream
                System.out.println("Http Request from browser : " +
httpRequest);

                //GET /index.html HTTP/1.1
                String[] data = httpRequest.split(" ");
                File htmlFile = new File("c:\\latihan" + data[1]);

                DataOutputStream output =
                        new
DataOutputStream(connectionsocket.getOutputStream());

                if (!htmlFile.exists()) {
                    output.writeBytes("HTTP/1.0 404 Not Found\r\n");
                    output.writeBytes("Content-Type: text/html\r\n");
                    output.writeBytes("\r\n");//end of http header
                    output.writeBytes("<html><body>Html file " +
                            htmlFile.getAbsolutePath()
                            + " not found</body></html>\n");
                    output.flush();
                } else {
                    System.out.println("\nClient requested:" +
htmlFile.getAbsolutePath() + "\n");
                    output.writeBytes("HTTP/1.0 200 OK\r\n");
                    output.writeBytes("Content-Type: text/html\r\n");
                    output.writeBytes("\r\n");//end of http header
                    BufferedReader reader = new BufferedReader(new
FileReader(htmlFile));
                    String line;
                    while ((line = reader.readLine()) != null) {
                        output.writeBytes(line);
                    }
                    output.writeBytes("\n");//end of http header
                    output.flush();
                }
            } //go back in loop, wait for next request
        } catch (Exception ex) {
            ex.printStackTrace();

        }
    }
}

Tidak ada komentar:

Posting Komentar