Pages

15 April 2013

Membuat Web Server Sedehana dengan Java

Pada posting kali ini saya akan membuat sesatu sesuai judul. Ya, web server sederhana. Dikatakan sederhana karena web server hanya sebatas mengirimkan balasan HTML kepada browser saat browser mengunjungi localhost dengan IP yang nantinya kita tentukan.

Berikut code untuk program main-nya:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 *
 * @author ASUS A43B
 */
public class JavaWebServer {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws FileNotFoundException, IOException {
        // TODO code application logic here
        // Instansiasi kelas yang telah kita buat
        WebServer ws = new WebServer();
        ws.start();
    }
}

Berikut code kelas yang akan menjalankan fungsi web server nya:

package javawebserver;
// BufferedReader merupakan class bawaan JDK yg berfungsi untuk memberikan input dan output pada program
import java.io.BufferedReader;
// FileReader adalah class bawaan JDK yg berfungsi untuk membaca suatu file sebagai input
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
// class ServerSocket dan Socket udah dijelaskan pada post sebelumnya tentang program client-server sederhana
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author ASUS A43B
 */
public class WebServer {
  /**
   * WebServer constructor.
   */
    protected void start() throws IOException {
    // Deklarasi class ServerSocket
    ServerSocket s;

    // Seperti yang kita tau, port digunakan untuk menghubungkan antar proses yg berbeda
    // Tentukan sendiri port mu, bebas
    String port = "5111";
    System.out.println("Webserver starting up on port " + port);
    System.out.println("(press ctrl-c to exit)");

    //inisialisasi server
    try {
      // Instansiasi class ServerSocket dengan parameter berupa port yang telah kamu tentukan di atas
      s = new ServerSocket(Integer.parseInt(port));
    } catch (Exception e) {
      System.out.println("Error: " + e);
      return;
    }    // Instansiasi class BufferedReader dengan menggunakan file sebagai inputan
    BufferedReader fScan = new BufferedReader(new FileReader("C:\\Users\\Agung\\Documents\\fileku.html"));
    // 9 line di bawah merupakan algoritma pembacaan string yang ada pada file
    // Karena nanti file akan dibaca di browser, maka file saya buat sebagai file HTML
    String allString = "";
    String text = "";
    text = fScan.readLine();
    while(text != null)
    {
        allString += text;
        text = fScan.readLine();
    }
    fScan.close();

    System.out.println("Waiting for connection");
    for (;;) {
      try {
        // Menerima koneksi
        Socket remote = s.accept();

        // Mengirim pesan
        System.out.println("Connection, sending data.");

        BufferedReader in = new BufferedReader(new InputStreamReader(
            remote.getInputStream()));
        PrintWriter out = new PrintWriter(remote.getOutputStream());

        // Membaca permintaan pengguna di kolom url
        String str = ".";
        while (!str.equals(""))
          str = in.readLine();

        // Isi dari permintaan pengguna
        out.println("HTTP/1.0 200 OK");
        out.println("Content-Type: text/html");
        out.println("Server: Bot");
        out.println("");  // Sebagai pemisah antara header HTML dengan isi file HTML
        out.println(allString); // mengirimkan isi file HTML yang akan dibaca browser.
        out.flush();
        remote.close();
      } catch (Exception e) {
        System.out.println("Error: " + e);
      }
    }
  }
}

Sekian post dari saya kali ini, semoga bermanfaat.. Jaa Ne!!

Tidak ada komentar:

Posting Komentar