package ar.com.javacuriosities.networking.tcp.webserver;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/*
* Por medio de este WebServer básico vamos a poder entrar a un browser
* y al conectarnos a http://localhost:8084/index.html, esa petición
* Será manejada por nuestro server
*/
public class WebServer {
public static void main(String args[]) {
WebServer webServer = new WebServer();
webServer.start();
}
private void start() {
System.out.println("WebServer started port 8084");
try (ServerSocket serverSocket = new ServerSocket(8084)) {
System.out.println("Waiting connections");
for (;;) {
// Esperando la conexión
Socket client = serverSocket.accept();
// Cliente conectado
System.out.println("Connection accepted, sending data");
BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter output = new PrintWriter(client.getOutputStream());
// Leemos los datos recibidos desde el cliente, serían los encabezados de la petición
String data = null;
while (!"".equals(data)) {
data = input.readLine();
System.out.println(data);
}
// Enviamos la respuesta
// Enviamos la cabecera
output.println("HTTP/1.1 200 OK");
output.println("Content-Type: text/html");
output.println("Server: JavaCuriosites");
// Esta linea en blanco indica que terminaron los header
output.println("");
// Enviamos la pagina en HTML
output.println("<html>");
output.println("<head>");
output.println("<title>JavaCuriosites WebServer</title>");
output.println("</head>");
output.println("<body>");
output.println("<h1>Welcome to our mini Web-Server</h1>");
output.println("</body>");
output.println("</html>");
// Hacemos el Flush
output.flush();
output.close();
// Cerramos la conexión
client.close();
}
} catch (Exception e) {
// Log and Handle exception
e.printStackTrace();
}
}
}