Senin, 15 April 2013

Web Server Sederhana Menggunakan JAVA

Web server merupakan software yang memberikan layanan data yang berfungsi menerima permintaan HTTP atau HTTPSdari klien yang dikenal dengan browser web dan mengirimkan kembali hasilnya dalam bentuk halaman - halaman web yang umumnya berbentuk dokumen HTML.

Namun program di bawah  ini adalah web server sederhana. yaitu bagaimana kita bisa mengakses file HTML yang berada di komputer kita melalui localhost. 

namun sebelum itu buatlah file HTML terlebih dahulu. disini saya meletakkan file HTML saya di "D:". ini sangat penting karna akan mempengaruhi source code yang kita buat.

berikut contoh file HTML sederhana di notepad:


<HTML>
<HEAD> <TITLE> Belajar WEB Server Java</TITLE></HEAD>
<BODY>

<H1>Web Server </H1>


 Belajar membuat web server menggunakan java


</BODY>


</HTML>

sorry y kalau file HTMLnya sederhana banget.. cuma buat ngetes ajah koq.... setelah itu simpan file in "D:"



nah yang ini adalah source codenya:


package basicserver;

/**
 *
 * @author Nouvhy
 */
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.StringTokenizer;
     
    public class BasicServer
    {
            public static void main(String[] args)
            {
            final int SERVER_PORT = 2006;   // port yang digunakan
            ServerSocket serverSocket = null;
            String servPath = "D:/";  // tempat kita menaruh file HTML, di atas tadi saya menaruh filenya di D.
           
            try
            {
                serverSocket = new ServerSocket(SERVER_PORT);// membuka server socket
                System.out.println("Connecting.....");
            }
            catch (IOException e)
            {
                System.err.println("Could not listen on port: " + SERVER_PORT);
                System.exit(1);
            }
            
           
            while (true)
            {
                    Socket clientSocket = null;
                    try
                    {
                        clientSocket = serverSocket.accept(); //membuka client socket
                    }
                    catch (IOException e)
                    {
                        System.err.println("Accept failed.");
                        System.exit(1);
                    }
                    PrintWriter out=null;
                    BufferedReader in=null;// membaca request 
                    System.out.println("IP Client: "+clientSocket.getInetAddress().getHostAddress());
                    try
                    {
                            
                            out = new PrintWriter(clientSocket.getOutputStream(), true);
                            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                            out.flush();
                           
                            String s;
                            while (!(s = in.readLine()).isEmpty())
                            {
                                    if(s.length() > 0)
                                    {
                                            System.out.println(s);
                                            StringTokenizer tokens = new StringTokenizer(s);
                                       
                                            if(tokens.nextToken().equals("GET"))
                                            {
                                                    String fileRequested = tokens.nextToken().replace("/", "");
                                                    fileRequested = RemoveQString(fileRequested);
                                                    if(fileRequested.equals("")) // jika file direquest
                                                    {
                                                            fileRequested = "index.html"; //file yang direquest
                                                    }
                                                    File reqFile = new File(servPath + fileRequested);
                                                    System.out.println("File " + fileRequested + " was requested.");// menapilkan tulisan file request
                                                    if(reqFile.exists())
                                                    {
                                                            try
                                                            {
                                                                    FileReader fText = new FileReader(reqFile);//membaca file
                                                                    BufferedReader bfFile = new BufferedReader(fText);
                                                                   
                                                                    String line;
                                                                    while ((line = bfFile.readLine()) != null)
                                                                    {
                                                                            out.write(line);// menampilkan index.html
                                                                    }
                                                                    out.flush();
                                                                    bfFile.close();
                                                                    System.out.println("The file was served.");
                                                            }
                                                            catch(IOException e)
                                                            {
                                                                    out.write("The file you have requested (" + fileRequested + ") could not be served: " + e.getMessage());
                                                                    out.flush();
                                                                    System.out.println("An IO exception occured.");
                                                            }
                                                    }
                                                    else
                                                    {
                                                            out.write("The file you have requested (" + fileRequested + ") was not found.");
                                                            out.flush();
                                                            System.out.println("File not found.");
                                                    }
                                            }
                                    }
                            }
                            out.close();
                            in.close();
                            clientSocket.close();
                    }
                    catch (IOException e)
                    {
                            e.printStackTrace();
                    }
            }
        }
           
            private static String RemoveQString(String str)//untuk mengambil request sebelum tanda tanya
            {
                    int qPos = str.indexOf("?");
                    if(qPos >= 0)
                    {
                            str = str.substring(0, qPos);
                    }
                    return str;
            }
    }

jalankan program netbean kita, setelah run dan muncul conection..... 
buka brouser dan ketikan "localhost:(port yang kita gunakan)"  contoh localhost:2006
jika komputer teman kita ingin mengakses file html kita, caranya ketikan IP kita : port kita contoh 192.168.1.4:2006
maka akan muncul hasil sebagai berikut:


ok... sekian cara membuat web server sederhana menggunakan java.

Tidak ada komentar:

Posting Komentar