package vn.edu.rmit.sadi;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class WebServer {
private String root;
public static void main(String[] args) {
new WebServer("C:\\").start();
}
private WebServer(String location) {
this.root = location;
}
public void start() {
try {
ServerSocket server = new ServerSocket(8771);
while (true) {
Socket client = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter writer = new PrintWriter(new BufferedOutputStream(client.getOutputStream()), true);
while (true) {
System.out.println("Receiving request...");
String[] tokens = reader.readLine().split(" ");
handleRequest(tokens[0], tokens[1], writer);
}
}
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
private void handleRequest(String method, String url, PrintWriter writer) throws FileNotFoundException, IOException {
// only supports GET
if (!(method.equalsIgnoreCase("GET"))) {
writer.println("Unsupported HTTP method");
writer.println("END");
return;
}
String absolutePath = root + url;
File file = new File(absolutePath);
// this is 404 - Not Found
if (!file.exists()) {
writer.println("Resource does not exist");
writer.println("END");
return;
}
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
while ((line = reader.readLine()) != null)
writer.println(line);
writer.println("END");
}
}